This question already has answers here:
How to display all x labels in R barplot?
(4个答案)
5年前关闭。
可能非常简单,但我是R(和堆栈)的新手...
似乎无法让汽车名称显示在我的barplot的x轴上。
我尝试粘贴“如何在R barplot中显示所有x标签?”中给出的示例中。问题,但是没有用
我的代码如下。该代码对其他人有用吗?
从这里,您需要知道如何以及在何处添加它们。也许很多人首先看到的是
但是您至少会对两个帐户感到失望:首先,您看不到所有名称,因为
要解决第一个问题,您可以尝试旋转文本。您可以使用
但是,您会再次感到失望,因为许多名称将超出默认的底部边距(并消失)。您可以使用此方法修复前面的
另一个问题-放置标签的位置-通过读取
现在,要复制链接的建议之一,请尝试:
(不需要
(4个答案)
5年前关闭。
可能非常简单,但我是R(和堆栈)的新手...
似乎无法让汽车名称显示在我的barplot的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))
最佳答案
@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(...)
。)10-08 00:29