如何仅使用条形图功能调整R中条形图的y轴

时间:2015-05-13 18:01:32

标签: r plot bar-chart axis-labels

使用此示例:

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

你从(0 - 30)得到一个很多条形图的图表。

我的问题是如何调整它以使y轴为(10-30),底部有一个分裂,表明截止数据下面有数据?

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

1 个答案:

答案 0 :(得分:2)

不建议这样做。切断棒的底部通常被认为是不好的做法。但是,如果您查看?barplot,它会有一个ylim参数,可以与xpd = FALSE(打开&#34;剪切&#34;)结合使用来切断底部酒吧。

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

另请注意,这里应该小心。我按照你的问题使用0和30作为y-bounds,但是最大mpg是33.9,所以我也修剪了4个条形图的顶部,其值为&gt; 30。

我知道的唯一方法是做出&#34;分裂&#34;在轴上使用plotrix。所以,基于

  

具体来说,我想在base R程序中只使用barplot函数而不是plotrix函数(与已经提供的建议不同)。这可能吗?

答案是&#34;不,这是不可能的&#34;从某种意义上说,我认为你的意思。 plotrix肯定会这样做,并且它使用基本R函数,所以你可以这样做,但是你可以使用plotrix

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

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

结果图片如下:

enter image description here

修改:您可以使用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 在评论中,您说您不喜欢ggplot的外观。这很容易定制,例如:

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

enter image description here