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

R语言如何绘制两组间多指标比较的单幅合并柱状图

两组间多指标比较柱状图实现方案

你原有单指标绘图的逻辑完全可以复用,只需要先把宽格式数据集转换为ggpubr兼容的长格式,再调整映射关系即可,不需要更换绘图工具。

1. 数据预处理

你当前的数据集是宽格式:三个量表得分各占一列,无法直接映射多组绘图元素。需要先把三个指标列转换为长格式,保留性别分组变量:

# 加载依赖包
library(ggpubr)
library(tidyr)

# 示例数据集(和你提供的完全一致)
Extraversion <- c(4.3, 2, 4.2, 4, 2, 1.5, 3.8, 3.5, 2.1, 2.1, 3)
Anxiety <- c(1.2, 3, 1, 2.3, 5, 5, 2.3, 2.2, 5, 4.5, 3)
Depression <- c(2, 3.5, 1, 3.5, 5, 5, 1, 2, 4.3, 4.5, 1)
Sex <- c("Male", "Female", "Male", "Male", "Female", "Female", "Male", 
                "Female", "Female", "Female", "Male")
data <- data.frame(Extraversion, Anxiety, Depression, Sex)

# 宽格式转长格式
data_long <- pivot_longer(
  data,
  cols = c(Extraversion, Anxiety, Depression),
  names_to = "Indicator",
  values_to = "Score"
)

转换后的数据每一行对应1名被试的1项量表得分,包含3列:性别(Sex)、指标名称(Indicator)、对应得分(Score)。

2. 绘图代码

直接沿用你之前的ggbarplot参数配置,仅调整x轴、填充变量的映射,微调位置避让参数避免元素重叠:

ggbarplot(
  data_long,
  x = "Indicator",
  y = "Score",
  add = c("mean_se", "jitter"), # 保留均值±标准误误差棒、原始散点
  color = "black",
  fill = "Sex", # 按性别区分柱子填充色
  alpha = 0.6,
  palette = "jama", # 保留原有jama配色
  position = position_dodge(0.8),
  xlab = "心理量表指标",
  ylab = "量表评分(1-5分)",
  legend.title = "性别"
)

可选调整

  • 若需要x轴展示性别、每个性别下并排三个指标的柱子,仅需把代码中x = "Indicator"和fill = "Sex"的映射互换,适当调整position_dodge宽度即可。
  • 若需要添加组间比较的显著性标记,直接在绘图代码后拼接+ stat_compare_means(aes(group = Sex), label = "p.signif"),即可自动为每个指标添加男女组差异的显著性标记,和单指标图的标注逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:12:32