如何在ggbarplot中为均值±标准差的抖动点按group2着色?
问题:ggpubr柱状图中让抖动点按group2着色
我有如下数据框:
my.var group1 group2 c1 3.8 c gp1 c2 3.9 c gp2 c3 4.3 c gp3 c4 3.7 c gp4 s1 3.6 s gp1 s2 3.9 s gp2 s3 3.2 s gp3 s4 3.6 s gp4 x1 3.6 x gp1 x2 4.4 x gp2 x3 3.9 x gp3 x4 4.4 x gp4
数据框的dput对象:
df <- structure(list(my.var = c(3.8, 3.9, 4.3, 3.7, 3.6, 3.9, 3.2, 3.6, 3.6, 4.4, 3.9, 4.4), group1 = c("c", "c", "c", "c", "s", "s", "s", "s", "x", "x", "x", "x"), group2 = c("gp1", "gp2", "gp3", "gp4", "gp1", "gp2", "gp3", "gp4", "gp1", "gp2", "gp3", "gp4")), row.names = c("c1", "c2", "c3", "c4", "s1", "s2", "s3", "s4", "x1", "x2", "x3", "x4"), class = "data.frame")
我已经用ggpubr创建了展示group1分组下my.var均值±标准差的柱状图,现有代码如下:
library(ggpubr) ggbarplot(df, x="group1", y="my.var", add=c("mean_sd", "jitter")) + stat_compare_means(comparisons=list(c("s", "c"), c("x", "c")), method="t.test", label = "p.signif")
现在希望让图中的抖动点按照group2的类别着色,请问该怎么实现?
解决方案
要实现抖动点按group2着色,不能直接使用add="jitter",需要通过自定义geom_jitter()来指定颜色映射,修改后的代码如下:
library(ggpubr) ggbarplot(df, x="group1", y="my.var", add="mean_sd") + geom_jitter(aes(color = group2), width = 0.2) + # 按group2给抖动点着色,控制抖动幅度 stat_compare_means(comparisons=list(c("s", "c"), c("x", "c")), method="t.test", label = "p.signif") + scale_color_discrete(name = "Group2") # 可选:修改颜色图例的标题
关键改动说明:
- 移除原代码
add参数中的"jitter",改用geom_jitter()单独添加抖动点 - 在
geom_jitter()的aes()里设置color = group2,将抖动点颜色与group2关联 width=0.2用于调整抖动点在x轴方向的分散程度,可根据图表需求自行修改scale_color_discrete()是可选配置,用于优化颜色图例的显示标题,提升图表可读性
内容的提问来源于stack exchange,提问作者Cocoa99
相关产品推荐
相关产品推荐

