You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:22:24