首页 > 解决方案 > 值连续时如何自定义具有不同颜色的ggplot2轴标签

问题描述

使用不同颜色自定义 ggplot2 轴标签的帖子描述了当数据源中的每个(离散)值都有自己的相应标签时,如何更改每个标签的颜色。但是,当您有一个较大的数据集并且该数据集中的每个值都不是由其自己的值表示(这很快成为连续值的情况)时,您如何有效地引用和格式化每个标签?

标签: rggplot2

解决方案


以下将适用于 ggplot2 3.0.0。对于早期版本的 ggplot2, 的确切结构ggplot_build(plt1)$layout$panel_params[[1]]$y.label会有所不同。


在下面的可重现数据集和相应图表中,您将看到数据框 df 中的 A 列和 B 列都有 10 个观察值,并且 y 轴上显示的 B 分配有 4 个标签。使用ggplot_build()andtheme()您可以以任何您喜欢的方式引用和格式化 y 标签。下面,负数和正数分别被分配了红色和蓝色。零保持黑色。

片段

# settings
library(ggplot2)
set.seed(123)

# data
A = rnorm(10, mean=0, sd=1)
B = rnorm(10, mean=0, sd=1)
df <- data.frame(A,B)

# initial plot
plt1 <- ggplot(data = df) + aes(x=A, y=B)+geom_line()

# retrieve lables using ggplot_build()
yLabVals <- as.numeric(ggplot_build(plt1)$layout$panel_params[[1]]$y.labels)

# create color list
yLabs <- ifelse(yLabVals < 0, "red", "blue")
yLabs[yLabVals == 0] <- 'black'

# plot
plt2 <- plt1 + theme(axis.text.y = element_text(angle = 0, hjust = 1, colour = yLabs))
plt2

阴谋

在此处输入图像描述


推荐阅读