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

如何在R语言barplot函数中合并堆叠柱状图的重复分组标签

R语言base包barplot堆叠柱状图分组标签去重方案

核心实现思路:先关闭barplot默认的x轴标签输出,捕获函数返回的各柱子x轴坐标,按分组计算每个组的居中位置,仅在对应位置输出1次分组标签即可。
改造后的完整代码如下:

# 原有数据读取和处理逻辑
teste <- read.table(file.choose(), header = TRUE)
prop <- subset(teste, select = -nome)

# 绘制堆叠柱,禁用默认x轴输出,同时保存所有柱子的x轴中心坐标
bp_pos <- barplot(t(as.matrix(prop)), col = rainbow(6), xaxt = "n", space = 0)

# 处理分组标签,计算每个组标签的摆放位置
group_labels <- teste$nome
# 按出现顺序提取不重复的分组名
unique_groups <- unique(group_labels)
# 计算每个分组对应所有柱子的中心位置的中点,作为标签摆放坐标
label_pos <- tapply(bp_pos, group_labels, function(x) mean(range(x)))

# 手动绘制x轴标签,每个分组仅显示一次
axis(side = 1, at = label_pos, labels = unique_groups, tick = FALSE)

# 可选补充:添加分组之间的分隔虚线,区分不同组别
group_lengths <- rle(group_labels)$lengths
sep_points <- cumsum(group_lengths)[-length(group_lengths)] + 0.5
abline(v = sep_points, lty = 2, col = "gray60")

关键参数说明

  • xaxt = "n":禁用barplot默认生成的x轴,避免重复标签输出
  • barplot返回值bp_pos:长度和柱子数量一致的向量,每个值对应一个柱子的x轴中心坐标
  • tapply按分组对柱子坐标聚合,计算每组的中点位置,保证标签居中显示在对应组的正下方

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:24:01