基于值的 Geom_jitter 颜色

mrp*_*ter 5 r ggplot2 jitter

有没有办法根据数值为箱线图上的抖动点着色,例如:

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)

在此输入图像描述

cam*_*lle 3

像您一样列出几何中的颜色名称并不会告诉色标要使用什么颜色\xe2\x80\x94,它只是将值分成类别。字符串"red"or"black"不一定具有任何意义。如果您想在几何图形中分配颜色,请给出您正在使用的颜色名称或十六进制代码,然后添加,scale_color_identity这样就会有一个指示,"red"实际上意味着“使其具有红色”等。

\n\n\n\n
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

\n\n

更好(并且更具可扩展性和可维护性)是关注点分离:让 geoms 处理创建几何图形并映射到比例,并让比例处理设置比例的外观。您可以使用a < 5作为变量(一种代理变量,因为它不在您的数据框中),它将采用 true 或 false 值。然后使用色标(例如scale_color_manual)根据真值或假值设置颜色。

\n\n
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

\n\n

由reprex 包(v0.2.0)于 2018-07-03 创建。

\n