【问题标题】:How to adjust the y-axis of bar plot in R using only the barplot function如何仅使用 barplot 函数在 R 中调整条形图的 y 轴
【发布时间】:2015-05-13 18:01:32
【问题描述】:

使用这个例子:

 x<-mtcars;
 barplot(x$mpg);

您会得到一个图表,其中包含 (0 - 30) 的许多条形图。

我的问题是如何调整它,使 y 轴为 (10-30),底部有一个分割线,表明有数据低于截止值?

具体来说,我想在基础 R 程序中仅使用 barplot 函数而不是 plotrix 中的函数来执行此操作(与已经提供的建议不同)。这可能吗?

【问题讨论】:

  • 你想要barplot(table(cut(x$mpg, breaks=5)))这样的东西吗?
  • MrFlick(酷名仅供参考)我想要的是切断条形图上 y 轴上的 0-9。如果我使用 ylim=(10-30) 它可以工作,但是我会让其余的条形图脱离情节。我想切断它。也许从 y 轴上的 0 开始,然后切割,然后在 y 轴上绘制 10-30 的条形图。

标签: r plot bar-chart axis-labels


【解决方案1】:

不建议这样做。切掉条的底部通常被认为是不好的做法。但是,如果您查看?barplot,它有一个ylim 参数,可以与xpd = FALSE(打开“剪裁”)结合使用以切断条形的底部。

barplot(mtcars$mpg, ylim = c(10, 30), xpd = FALSE)

还请注意,您应该在这里小心。我按照你的问题使用 0 和 30 作为 y 边界,但最大 mpg 是 33.9,所以我还剪裁了 4 个值 > 30 的条的顶部。

我知道在轴上进行“拆分”的唯一方法是使用plotrix。所以,基于

具体来说,我想在基础 R 程序中仅使用 barplot 函数而不是 plotrix 中的函数来执行此操作(与已经提供的建议不同)。这可能吗?

在我认为您的意思的意义上,答案是“不,这是不可能的”。 plotrix 确实做到了,而且它使用基本的 R 函数,所以你可以按照他们的做法去做,但你也可以使用 plotrix

您可以在条形图的顶部绘制,也许一条水平虚线(如下所示)可以帮助表明您违反了条形图应该是普遍接受的规则:

abline(h = 10.2, col = "white", lwd = 2, lty = 2)

生成的图像如下:

编辑:您可以使用segments 来欺骗轴中断,如下所示:

barplot(mtcars$mpg, ylim = c(10, 30), xpd = FALSE)
xbase = -1.5
xoff = 0.5
ybase = c(10.3, 10.7)
yoff = 0
segments(x0 = xbase - xoff, x1 = xbase + xoff,
         y0 = ybase-yoff, y1 = ybase + yoff, xpd = T, lwd = 2)
abline(h = mean(ybase), lwd = 2, lty = 2, col = "white")

按原样,这非常脆弱,xbase 是手动调整的,因为它取决于您的数据范围。您可以将条形图切换到xaxs = "i" 并设置xbase = 0 以获得更高的可预测性,但为什么不直接使用已经为您完成所有这些工作的plotrix?!

ggplot 在 cmets 中你说你不喜欢 ggplot 的样子。这很容易定制,例如:

library(ggplot2)
ggplot(x, aes(y = mpg, x = id)) +
    geom_bar(stat = "identity", color = "black", fill = "gray80", width = 0.8) +
    theme_classic()

【讨论】:

  • 感谢 gregor。我希望不要使用 plotrix 或 ggplot。但是,看起来我需要这样做。我同意砍掉底部是不好的。这就是为什么我想做 plotrix 所做的剪辑。我只是不喜欢 plotrix 和 ggplot 如何呈现图表。我喜欢基本 barplot() 提供的视觉效果。无论如何,我接受了您的回答并投了赞成票。再次感谢。
  • 如果您对 ggplot 的唯一厌恶是它的外观,您只需要尝试一些其他主题。 (虽然它不会让您轻松切断轴。)查看其他编辑。
猜你喜欢
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多