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

如何用R的ggplot2绘制多亚组重复测量的准确率百分比条形图?

重复测量区块准确率分组条形图绘制方案

数据说明

你的长格式数据包含:

  • 7个重复测量区块(Block)
  • 二元准确率(Acc,0/1)及已计算的区块准确率百分比(AccPercent)
  • 多维度分组:主组(Group:DD/TD)、年龄亚组(AgeRange:I/II)、任务条件(SeqType:SOC/MOC)

绘图实现(基于R的ggplot2)

步骤1:数据预处理(聚合群体均值)

若需展示群体平均准确率,先按任务、年龄组、区块、主组分组,计算均值与标准误(用于误差棒):

library(dplyr)

# 聚合数据,计算每个分组的平均准确率和标准误
summary_data <- df %>%
  group_by(SeqType, AgeRange, Block, Group) %>%
  summarise(
    mean_acc = mean(AccPercent, na.rm = TRUE),
    se_acc = sd(AccPercent, na.rm = TRUE)/sqrt(n()),
    .groups = "drop"
  )

# 确保区块按顺序排列
summary_data$Block <- factor(summary_data$Block, levels = paste0("rand", 1:7))

步骤2:绘制分组条形图

通过分面实现4个子图,填充色区分DD/TD组:

library(ggplot2)

ggplot(summary_data, aes(x = Block, y = mean_acc, fill = Group)) +
  # 并排条形图
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  # 添加误差棒
  geom_errorbar(aes(ymin = mean_acc - se_acc, ymax = mean_acc + se_acc),
                position = position_dodge(width = 0.8), width = 0.2) +
  # 按年龄组+任务条件生成4个子图
  facet_grid(AgeRange ~ SeqType, 
             labeller = labeller(
               SeqType = c(SOC = "SOC任务", MOC = "MOC任务"),
               AgeRange = c(I = "年龄组I", II = "年龄组II")
             )) +
  # 轴标签设置
  scale_y_continuous(name = "准确率(%)", limits = c(0, 100), expand = c(0,0)) +
  scale_x_discrete(name = "区块") +
  # 自定义分组颜色
  scale_fill_manual(values = c("DD" = "#2c3e50", "TD" = "#e74c3c")) +
  # 主题优化
  theme_bw() +
  theme(
    panel.grid.major.x = element_blank(),
    legend.title = element_blank(),
    legend.position = "bottom",
    strip.background = element_rect(fill = "#f8f9fa"),
    strip.text = element_text(size = 10, face = "bold")
  )

关键代码解释

  • position_dodge:让DD/TD两组条形并排,避免重叠
  • facet_grid:精准匹配你需要的「SOC-AgeRange-I」等4组子图布局
  • 误差棒用标准误,反映群体数据的变异程度
  • 主题优化去除冗余网格线,提升图表可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:01:05