r - 值连续时如何自定义具有不同颜色的ggplot2轴标签
问题描述
使用不同颜色自定义 ggplot2 轴标签的帖子描述了当数据源中的每个(离散)值都有自己的相应标签时,如何更改每个标签的颜色。但是,当您有一个较大的数据集并且该数据集中的每个值都不是由其自己的值表示(这很快成为连续值的情况)时,您如何有效地引用和格式化每个标签?
解决方案
以下将适用于 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
阴谋
推荐阅读
- javascript - javascript 生成音频元素时,HTML5 audio.pause() 不起作用
- c# - 如何通过c#代码打开和使用Git Bash
- wordpress - .htaccess 在特定目录上重定向 404
- node.js - 使用文件名中的日期/时间创建日志文件
- java - UTF-16 编码的错误字节
- tsql - 连接许多条件的行
- r - 使用`integrate`对R中的观察向量进行数值积分
- observablecollection - 绑定到 Gridview 时无法更新 Observable 集合 - UWP C#
- django - 目标 WSGI 脚本“/var/www/backend/backend/wsgi.py”不能作为 Python 模块加载
- arrays - 如何使用 Laravel 和 Ajax 从数据库数组中检查复选框