stat_summary未识别aes(),如何按clarity分组生成均值误差线?
解决stat_summary按clarity分组生成统计量的问题
你的问题出在x轴仅包含cut=="Fair"这一个类别,ggplot不会自动依据color=clarity分组计算统计量,因此stat_summary只生成了整体的均值点。以下是修正方案:
修改后的代码
library(ggplot2) library(ggforce) library(dplyr) diamonds %>% filter(cut == "Fair") %>% ggplot(aes(x = cut, y = price, color = clarity)) + scale_color_brewer(palette = "Dark2", guide = "none") + geom_violin(fill = "gray80", linewidth = 1, alpha = .5) + geom_sina(alpha = .25, position = position_dodge(width = 0.5)) + # 让散点按分组错开 coord_flip() + stat_summary( fun.data = "mean_se", colour = "black", linewidth = 1, size = 0.5, group = clarity, # 明确指定按clarity分组计算统计量 position = position_dodge(width = 0.5) # 让不同组的统计量横向分散,避免重叠 )
关键改动说明
group = clarity:强制stat_summary按clarity分组,计算每个组的均值和标准误,而非整体统计量position = position_dodge(width = 0.5):由于x轴只有一个类别,用该参数让不同clarity组的统计量、散点横向错开,避免重叠堆积- 给
geom_sina添加相同的position参数,让散点和统计量的位置对应,可视化更直观
如果想让统计量颜色与clarity分组对应,只需删除colour = "black",它会自动继承aes中的color=clarity映射。
内容的提问来源于stack exchange,提问作者yuliaUU
相关产品推荐
相关产品推荐

