如何在R Barplot中显示x轴标签?

时间:2015-08-13 04:20:33

标签: r

可能很简单,但我是R(和堆叠)的新手......

似乎无法将汽车名称显示在我的条形图的x轴上。

我尝试粘贴"如何在R barplot中显示所有x标签中给出的示例?"问题但是没有用

我的代码如下。该代码是否适用于其他任何人?

#plot of efficiency of 4 cylinder cars
#get 4cylinder cars seperate
fourcyl <- subset(mtcars, cyl == "4")
#barplot in descending order... need to add in car names.
barplot(fourcyl$mpg[order(fourcyl$mpg, decreasing = TRUE)], 
        horiz=FALSE,
        ylab = "Miles per Gallon",
        main = "Efficiency for 4 cylinder vehicles",
        ylim = c(0,35))

1 个答案:

答案 0 :(得分:2)

@ Pascal的评论链接到两个可能的解决方案,但最重要的是你需要手动添加汽车名称。

要了解要使用的汽车名称,请执行以下操作:如果您查看mtcars,您会看到它们没有出现在列标题下,这意味着它们是行名称。为了实现它们,只需:

carnames <- rownames(fourcyl)[ order(fourcyl$mpg, decreasing=TRUE) ]

从这里开始,您需要知道 添加它们。也许许多人看到的第一个地方是axis,你可以在那里做类似的事情:

axis(side=1, at=1:length(carnames), labels=carnames)

但你至少对两个帐户感到失望:首先,你没有看到所有的名字,因为axis礼貌地确保他们不会因为省略一些而重叠;第二,显示的那些在相应的垂直条下没有正确对齐。

要修复第一个,您可以尝试旋转文本。您可以使用las(请参阅help(par))并执行以下操作:

axis(side=1, at=1:length(carnames), labels=carnames, las=2)

但是你会有点失望的是,很多名字都会超过默认的底部边缘(并消失)。您可以使用前面的par(mar=...)进行修复(再次,请参阅其中的帮助并使用它来查找正确的参数),但是有一些解决方案可以提供更好的方法(美学上),其中两个在@Pascal的链接(真的,去那里)。

另一个问题 - 其中放置标签 - 通过阅读help(barplot)来解决,并注意到来自barplot(...)的返回值是提供中间位置的矩阵每个酒吧的点。奇怪,或许,但它就是它(它有一个很好的理由,某处)。因此,抓住这一点,你将几乎无家可归:

bp <- barplot(fourcyl$mpg[order(fourcyl$mpg, decreasing = TRUE)], 
              horiz=FALSE, ylab = "Miles per Gallon",
              main = "Efficiency for 4 cylinder vehicles",
              ylim = c(0,35))

现在,要复制其中一个链接的建议,请尝试:

text(x=bp[,1], y=-1, adj=c(1, 1), carnames, cex=0.8, srt=45, xpd=TRUE)

(无需axis命令,只需bp <- barplot(...)carnames <- ...text(...)。)