我有一个带有分组条形图的条形图。是否可以在每个小节中添加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)
答案 0 :(得分:1)
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
如果您真的想制作一个更好的绘图,我会推荐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旋转名称以使其显示得更好