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

求助:如何按分组变量M1绘制分类变量X的效应估计误差棒图

修正后的绘图方案

原代码的核心问题在于:

  • 错误地将Level同时设为x轴和分面变量,导致每个Level被拆成独立面板,无法按M1分组展示4个Level的效应
  • 未利用Level作为分组变量区分不同条形,无法直观对比同一M1下的不同Level结果

以下是符合需求的代码:

library(ggplot2)

# 修正后的绘图代码
ggplot(effect_data, aes(x = M1, y = EffectEstimate, fill = Level)) +
  # 按Level分组并排显示条形
  geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.7) +
  # 误差线与条形位置对齐
  geom_errorbar(aes(ymin = LowerCI, ymax = UpperCI), 
                position = position_dodge(width = 0.8), 
                width = 0.25) +
  # 可选:如果需要横向展示,取消注释下面一行
  # coord_flip() +
  labs(
    title = "各模型下不同Level的效应估计值及置信区间",
    x = "12组不同分析模型(M1)",
    y = "效应估计值",
    fill = "Level(X的水平)"
  ) +
  theme_minimal() +
  # 优化主题:旋转x轴标签避免重叠,调整图例位置
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "top"
  )

关键调整说明:

  • 将x轴设为M1,确保每个分组对应一组模型结果
  • 用fill = Level区分4个水平的条形,并通过position_dodge实现同一M1下的条形并排
  • 移除了错误的facet_grid(.~Level),避免不必要的面板拆分
  • 调整了标签文本,让图表信息更清晰
  • 添加了主题优化,解决x轴标签重叠问题

如果需要横向展示效果,只需取消注释coord_flip(),此时M1会显示在y轴,条形横向排列,更适合模型数量较多的场景。

内容的提问来源于stack exchange,提问作者Science11

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:13:15