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

如何在R语言堆叠条形图中添加分段计数数值标签?

在R堆叠条形图中添加中心计数标签的解决方案

要给堆叠条形图的每个分段中心添加计数,核心是准确获取每个分段的x和y坐标。以下是修改后的完整代码及关键步骤说明:

# 生成各研究项目按时段的计数表格
counts <- table(all_study$study, all_study$time_of_day_num)
# 转换为矩阵,便于后续行列计算
counts_mat <- as.matrix(counts)

# 绘制堆叠条形图,同时保存每个条形的x轴位置
x_pos <- barplot(counts_mat, main="Distribution of Enrollment Time by Study for 24-25",
                 col=c("blue","red","green","yellow","orange"),
                 ylab= "Count",  names.arg=c("Night", "Evening", "Day"))

# 计算每个堆叠分段的中心y坐标
# 先计算每列(每个时段)的累计计数,即各分段的顶部y值
cum_counts <- apply(counts_mat, 2, cumsum)
# 中心y坐标 = 分段顶部值 - 当前分段高度的一半
center_y <- cum_counts - counts_mat / 2

# 遍历所有分段,添加计数标签
for (row in 1:nrow(counts_mat)) {
  for (col in 1:ncol(counts_mat)) {
    text(x_pos[col], center_y[row, col], labels = counts_mat[row, col], cex = 0.8)
  }
}

# 添加图例
legend(0.2, 70, legend=c("MATIC","TCD-2","TROOP","Lublin","Microbiome"), 
       fill=c("orange","yellow","green","red","blue"), cex=0.75)

关键说明:

  • barplot()函数会返回每个条形(对应Night/Evening/Day)的x轴位置,将其存入x_pos用于后续定位
  • cum_counts通过按列计算累计和,得到每个堆叠分段的顶部y坐标
  • center_y通过累计值减去当前分段高度的一半,精准定位到分段中心
  • 双重循环遍历所有行列,用text()将计数标签放置在对应中心位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:42:38