首页 > 解决方案 > barplot() 中分组条上的标签

问题描述

我有一个带有分组条的条形图是否可以为每个 bar包含 al abel ?没有条形标签的绘图示例:

test <- structure(c(0.431031856834624, 0.54498742364355, 0.495317895592119,0.341002949852507, 0.40229990800368, 0.328769657724329,0.258600583090379,0.343181818181818, 0.260619469026549), .Dim = c(3L, 3L), .Dimnames = list(
c("2015", "2016", "2017"), c("a", "b", "c")))

barplot(test,ylim=c(0,1),beside=T)

在此处输入图像描述

标签: rbar-chart

解决方案


在此处输入图像描述

p <- barplot(test, ylim=c(0, 1), beside=T)
text(p, test + .05*sign(test), labels=format(round(test, digits=2), nsmall=2))

最后一行在条形图上添加标签。barplot()p 获取x 轴条位置的返回值。在本例中,它的格式为 3x3 矩阵。 text()然后需要 p 作为他的x=论点。对于他的y=论点,它需要一个比条形图高度 ( test) 稍微偏移的值。确定条形sign()的方向(上方或下方,+1或),我通过尝试凭经验确定,这取决于您在表格中的值。因此,和是标签的 x 和 y 坐标。最后,确定应该打印哪些文本。和的组合-1.05x=y=labels=format()round()使您可以完全控制要显示的位数,并且显示的位数绝对是规则的,如果您仅使用round().

xpd=T您可以确定是否允许标签超出区域 。cex=可以确定标签的字体大小、 col=颜色和font=字体。

或者,您可以只test给出y=并确定pos=3它应该在上面以及offset=1文本的偏移量应该是多少字符宽度。

p <- barplot(test, ylim=c(0, 1), beside=T)
text(x=p, y=test, pos=3, offset=1, labels=format(round(test, digits=2), nsmall=2))

您可以通过查看文档来找到更多说明

?text
# and
?barplot

在 R 控制台中


推荐阅读