有没有办法根据数值为箱线图上的抖动点着色,例如:
ggplot(data, aes(y = y_var, x = x_var)) +
geom_jitter(size = 2, aes(color = ifelse(y_var < 5, "red", "black)))
Run Code Online (Sandbox Code Playgroud)
我添加了这个可重现的示例,但不太有效(绘图上的颜色与抖动调用不对应):
a <- rnorm(100, mean = 5, sd = 1)
b <- as.factor(sample(0:1, 100, replace = TRUE))
test_data <- data.frame(cbind(a,b))
test_data$b <- as.factor(test_data$b)
ggplot(test_data, aes(y = a, x = b)) +
geom_boxplot()+
geom_jitter(aes(color = ifelse(a < 5, "red", "black")))
Run Code Online (Sandbox Code Playgroud)
像您一样列出几何中的颜色名称并不会告诉色标要使用什么颜色\xe2\x80\x94,它只是将值分成类别。字符串"red"
or"black"
不一定具有任何意义。如果您想在几何图形中分配颜色,请给出您正在使用的颜色名称或十六进制代码,然后添加,scale_color_identity
这样就会有一个指示,"red"
实际上意味着“使其具有红色”等。
library(tidyverse)\n\nggplot(test_data, aes(y = a, x = b)) +\n geom_boxplot() +\n geom_jitter(aes(color = ifelse(a < 5, "red", "black"))) +\n scale_color_identity()\n
Run Code Online (Sandbox Code Playgroud)\n\n更好(并且更具可扩展性和可维护性)是关注点分离:让 geoms 处理创建几何图形并映射到比例,并让比例处理设置比例的外观。您可以使用a < 5
作为变量(一种代理变量,因为它不在您的数据框中),它将采用 true 或 false 值。然后使用色标(例如scale_color_manual
)根据真值或假值设置颜色。
ggplot(test_data, aes(y = a, x = b)) +\n geom_boxplot() +\n geom_jitter(aes(color = a < 5)) +\n scale_color_manual(values = c("TRUE" = "red", "FALSE" = "black"))\n
Run Code Online (Sandbox Code Playgroud)\n\n由reprex 包(v0.2.0)于 2018-07-03 创建。
\n