如何修改R语言分组条形图标签并在条形上方显示数值?
解决方案
针对你提出的两个问题,修改后的完整代码及说明如下:
1. 自定义X轴分组标签
在barplot()函数中添加names.arg参数,传入自定义标签即可替换默认的barplot1等名称。
2. 在条形上方显示数值
barplot()会返回每个条形的中心x坐标,先将该结果存入变量,再用text()函数把对应数值标注在条形顶部,通过微调位置避免与条形重叠。
修改后的完整代码
barplot1=c(8,3,4,1) barplot2=c(18,11,11,13) barplot3=c(39,42,42,45) barplot4=c(26,30,31,34) barplot5=c(9,13,12,7) data <- data.frame(barplot1,barplot2,barplot3,barplot4,barplot5) percantage <- 50 # 存储条形的x坐标 bp <- barplot(as.matrix(data), main="", yaxp=c(0, max(percantage), 5), col = c("#b62528","#f49401","#f9e536","#018404"), ylab="Percentage", xlab = "Elevation [m. a. s. l.]", beside=T, legend.text = c("CR","EN","VU","LC or NT"), # 自定义分组标签,可根据需求修改文本内容 names.arg = c("0-1000", "1000-2000", "2000-3000", "3000-4000", "4000+"), args.legend=list(bty="n",horiz=F, x="topright", inset = c(- 0.05, -0.1)), ) # 在条形顶部添加数值标签 text(bp, as.matrix(data) + 1, labels = as.character(as.matrix(data)), pos = 3)
关键改动说明
names.arg:直接替换X轴的分组名称,你可以把示例中的海拔区间改成任意需要的文本。bp <- barplot(...):捕获条形的x坐标,为后续文本定位提供基准。text()函数:as.matrix(data) + 1让文本在条形顶部上方1个单位(避免重叠),pos=3指定文本显示在坐标点的上方。
内容的提问来源于stack exchange,提问作者Sina Kh.
相关产品推荐
相关产品推荐

