ggplot geom_pointposition_jitterdodge 在指定颜色时不起作用?

问题描述 投票:0回答:3

我绘制了箱线图+点。我想给点添加颜色。

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"))

r ggplot2 colors boxplot jitter
3个回答
3
投票

在p1中,点不仅抖动,还被

factor(wt)
躲避。如果您只想抖动,请在
dodge.width = 0
中设置
position_jitterdodge


1
投票

看起来问题在于这些点具有离散的

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


0
投票

我做的是

ggplot(aes(group = cyl))
而不是
geom_point(aes(group = cyl))
geom_point(aes(group = cyl))
对我不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.