在r中的条形图中居条形标签

时间:2012-08-05 10:12:21

标签: r plot

如何将x轴上的标签居中以与条形图匹配?另外,如何将x轴标签进一步向下定位,使其不被x轴标签遮挡?谢谢!

par(mar= c(15,4,4,2) + 0.1)
barplot(58:1,xaxt="n",xlab="",ylab="Frequency", col=gray(5:0/5))
axis(1, labels=FALSE)
text(1:58, par("usr")[3] - 0.25, srt = 90, adj = 1,
labels = rep("Long Species Name",58), xpd = TRUE)
mtext(1, text = "Species", line=6)

enter image description here

1 个答案:

答案 0 :(得分:10)

查看barplot()的返回值(阅读?barplot)。在那里我们发现条形的中点由函数作为向量返回。因此,分配返回的对象(此处为对象bar)然后在调用axis()时使用它来定位刻度线是一件简单的事情。

axis()来电中,请注意我们同时指定labels参数 at参数,并将at设置为条形中点存储在bar中。 las = 2用于相对于轴旋转标签,cex.axis = 0.6用于缩小标签尺寸。

问题的第二部分由title()line参数处理。首先请注意,当您设置mar参数时,您要在“行”中设置边距大小,因此第1面(底部)的边距为15行。 line中的title()参数指定要绘制轴标签的边距线。

将这完全与我们的修改示例相结合:

op <- par(mar= c(15,4,4,2) + 0.1)
bar <- barplot(58:1, xaxt="n", xlab="", ylab="Frequency", col=gray(5:0/5))
axis(1, labels = paste("Long Species Name", 1:58), at = bar,
     las = 2, cex.axis = 0.6)
title(xlab = "Species", line=11)
par(op)

产生:

barplot produced using example code