gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:49:16 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to display all x labels in R barplot?

(4 个回答)


6年前关闭。




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

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

我尝试粘贴“如何在 R 条形图中显示所有 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(...) 。)

关于r - 如何让 x 轴标签显示在 R Barplot 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com