1

我已经绘制了一个箱线图+点。我想为这些点添加颜色。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"))

ggplot 样本

4

2 回答 2

3

在 p1 中,这些点不仅被抖动,而且还被factor(wt). 如果你只想要抖动,设置dodge.width = 0position_jitterdodge.

于 2018-09-25T21:04:25.577 回答
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

于 2018-09-25T21:06:33.227 回答