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

如何在R的barplot()中将两个分组堆叠条形图并列展示?

解决方法

问题出在直接用rbind()合并不同长度的分组变量,导致矩阵结构不符合需求。要实现两个并列的堆叠条形,需要先统一变量维度,给缺失的变量填充0,再构造正确的矩阵传入barplot()。

步骤1:准备数据并计算堆叠高度

先定义示例数据(替换成你的实际数值即可):

# 示例变量数值
A <- 4
B <- 6
C <- 5
D <- 8
E <- 7

group1 <- c(A, B, C)
group2 <- c(D, E)

计算每个分组的平均值,再算出每个变量在分组内占比对应的堆叠高度(保证每个条形总高度为分组平均值):

# Group1的堆叠高度计算
mean_group1 <- mean(group1)
sum_group1 <- sum(group1)
height_A <- A / sum_group1 * mean_group1
height_B <- B / sum_group1 * mean_group1
height_C <- C / sum_group1 * mean_group1

# Group2的堆叠高度计算
mean_group2 <- mean(group2)
sum_group2 <- sum(group2)
height_D <- D / sum_group2 * mean_group2
height_E <- E / sum_group2 * mean_group2

步骤2:构造统一维度的矩阵

将所有变量的高度整理成矩阵,缺失的变量用0填充,列对应分组,行对应变量:

plot_matrix <- matrix(
  c(height_A, 0,
    height_B, 0,
    height_C, 0,
    0,        height_D,
    0,        height_E),
  nrow = 5,
  ncol = 2,
  dimnames = list(c("A", "B", "C", "D", "E"), c("Group 1", "Group 2"))
)

步骤3:绘制并列堆叠条形图

调用barplot()生成图表,设置对应颜色与图例:

barplot(
  plot_matrix,
  col = c("Red", "Green", "Blue", "Yellow", "Pink"),
  legend.text = rownames(plot_matrix),
  args.legend = list(x = "topright"),
  ylab = "平均值",
  main = "分组变量堆叠条形图"
)

执行后会得到两个并列的条形:第一个是Group1的堆叠(A、B、C三色,总高度为Group1平均值),第二个是Group2的堆叠(D、E两色,总高度为Group2平均值)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:10