使用此示例:
x<-mtcars;
barplot(x$mpg);
你从(0 - 30)得到一个很多条形图的图表。
我的问题是如何调整它以使y轴为(10-30),底部有一个分裂,表明截止数据下面有数据?
具体来说,我想在基础R程序中仅使用barplot
函数而不是 plotrix 中的函数执行此操作(与已提供的建议不同)。这可能吗?
答案 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)
结果图片如下:
修改:您可以使用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()