我绘制了箱线图+点。我想给点添加颜色。
position_jitterdodge
在没有颜色的情况下工作得很好,如图B所示,点很接近,这就是我想要做的。但是当我尝试向点添加颜色时,jitter.width
参数不再起作用(图A)。点相距太远。我尝试了不同的数字 jitter.width
,但不起作用。我该如何解决这个问题?
library(tidyverse)
library(ggpubr)
mtcars$cyl <- factor(mtcars$cyl)
p1 <- mtcars %>% ggplot(aes(x = cyl, y = mpg, fill = cyl)) +
geom_boxplot() +
geom_point(position = position_jitterdodge(jitter.width = 0.2),
aes(color = factor(wt)), show.legend = FALSE)
p2 <- mtcars %>% ggplot(aes(x = cyl, y = mpg, fill = cyl)) +
geom_boxplot() +
geom_point(position = position_jitterdodge(jitter.width = 0.2))
ggarrange(p1, p2, labels = c("A", "B"))
在p1中,点不仅抖动,还被
factor(wt)
躲避。如果您只想抖动,请在 dodge.width = 0
中设置 position_jitterdodge
。
看起来问题在于这些点具有离散的
color
美学,但没有 group
美学。如果您想通过离散变量保持着色,请将 group = cyl
添加到 geom_point
层的美观效果中。如果您使用另一个数据集进行绘图,则分组变量将与您沿 x 轴绘制的变量相同。
一个问题:当您应用分组时,必须增加
jitter.width
才能使其可见。我必须在这里从 0.2 拨到 3。
另一种选择是按连续变量着色。
library(tidyverse)
library(ggpubr)
mtcars$cyl=factor(mtcars$cyl)
p3=mtcars %>% ggplot(aes(x=cyl, y=mpg, fill=cyl))+
geom_boxplot()+
geom_point(aes(color = factor(wt), group = cyl),
position=position_jitterdodge(jitter.width=0.2),
show.legend = F)
p4=mtcars %>% ggplot(aes(x=cyl, y=mpg, fill=cyl))+
geom_boxplot()+
geom_point(aes(color = wt),
position=position_jitterdodge(jitter.width=0.2),
show.legend = F)
ggarrange(p3, p4)
我做的是
ggplot(aes(group = cyl))
而不是geom_point(aes(group = cyl))
。 geom_point(aes(group = cyl))
对我不起作用。