在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
相关产品推荐
相关产品推荐

