我绘制了一个箱形图+点。我想为这些点添加颜色。 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"))
答案 0 :(得分:3)
在p1中,这些点不仅抖动,而且还被factor(wt)
闪避。如果只想抖动,请在dodge.width = 0
中设置position_jitterdodge
。
答案 1 :(得分:0)
问题似乎在于这些点具有离散的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)
这最终将内联,但现在有一个链接:color_and_jitter