barplot()中分组条形上的标签

时间:2018-10-13 04:53:12

标签: r bar-chart

我有一个带有分组条形图的条形图。是否可以在每个小节中添加l 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)

enter image description here

3 个答案:

答案 0 :(得分:1)

enter image description here

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

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

使用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控制台中

答案 1 :(得分:0)

您可以通过扩展text功能来添加标签。您可以根据需要使用参数。这是示例代码及其输出。

x= barplot(test,ylim=c(0,1),beside=T)
text(x, test, labels=test, pos=1, offset=.5, col="red", srt = 90) #srt is used for vertical labels

enter image description here

如果您真的想制作一个更好的绘图,我会推荐ggplot,因为它还具有其他一些功能,例如在绘图中添加主题,并且更易于定制。

答案 2 :(得分:0)

如果您想标记ever bar的类别不是很重要,则可以执行以下操作

allPermutations <- unlist(lapply(colnames(test), function(x) paste(x, rownames(test)) ))

barplot(test,ylim=c(0,1),beside=T, names.arg = allPermutations, las=2) 

文件行获取所有类别的组合。绘图调用可让您使用“ names.arg”指定单个值,而las = 2旋转名称以使其显示得更好