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

在base R的barplot(条形图)顶部添加计数标签的实现方法

Base R 条形图添加顶部计数标签的实现方法

barplot() 函数默认会返回所有条形中点的x轴坐标,配合text()函数即可快速完成标签添加,无需额外加载扩展包。

普通条形图实现示例

  • 先准备绘图数据,绘制条形图时接收返回的x轴坐标
    # 模拟计数数据
    counts <- c(12, 25, 18, 32, 9)
    names(counts) <- c("分类A", "分类B", "分类C", "分类D", "分类E")
    
    # 绘制条形图,ylim参数多预留10%的顶部空间避免标签溢出
    bar_centers <- barplot(counts, main = "带计数标签的条形图", ylim = c(0, max(counts) * 1.1))
    
  • 用text()函数在条形顶部添加标签
    text(
      x = bar_centers,  # 用barplot返回的中点坐标,确保标签居中
      y = counts,       # 标签y轴位置和条形高度对齐
      labels = counts,  # 要显示的计数内容,可替换为自定义文本
      pos = 3,          # 文本显示在坐标点的正上方
      cex = 0.9,        # 文本大小,可按需调整
      col = "darkred"   # 文本颜色,可按需调整
    )
    

堆叠条形图实现示例

如果是堆叠条形图,需要额外计算每一段堆叠区域的中点y坐标:

# 模拟堆叠分组数据
stack_counts <- matrix(
  c(8, 15, 7, 4, 10, 11),
  nrow = 3,
  byrow = TRUE,
  dimnames = list(c("组1", "组2", "组3"), c("分类A", "分类B"))
)

# 绘制堆叠条形图
bar_centers <- barplot(
  stack_counts,
  legend.text = rownames(stack_counts),
  main = "堆叠条形图标签示例",
  ylim = c(0, max(colSums(stack_counts)) * 1.1)
)

# 计算每一段堆叠区域的中点y坐标
y_mid <- apply(stack_counts, 2, cumsum) - stack_counts / 2

# 添加每一段的计数标签
text(
  x = rep(bar_centers, each = nrow(stack_counts)),
  y = as.vector(y_mid),
  labels = as.vector(stack_counts),
  cex = 0.8,
  col = "white"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:04