![](/img/trans.png)
[英]ggplot2 : How to reduce the width AND the space between bars with geom_bar
[英]How to reduce the spacing between bars without increasing their width in a geom_bar plot made with ggplot2?
我想减少条之间的间距但不增加所述条的宽度。 我在 ggplot2 中使用 geom_bar function。
几年前有人问过同样的问题,并提供了一个示例 plot( ggplot2:如何使用 geom_bar 减少条形之间的宽度和间距)。 然而,从来没有人想出一个令人满意的解决方案来解决这个问题。 我希望这次会有所不同!
谢谢大家。
拉奎尔。
让我们从逻辑上思考一下,并用下面的具体例子来证明:
library(ggplot2)
df <- data.frame(label = c("A", "B", "C", "D"),
value = c(3, 1, 2, 5))
p <- ggplot(df, aes(label, value))
为了使其完全可重现,让我们指定一张 4 英寸 x 4 英寸的图纸 window:
x11(width = 4, height = 4)
p + geom_col(width = 0.5, color = "black")
如果我们减小条之间的间距但保持条本身的宽度相同,那么最左边条的左边缘和最右边条的右边缘之间的距离必然会变小。 实现此目的的最常见方法是增加条形的宽度,但将绘图 window 缩小相同的量。
如果我们将条形大小从 1/2 增加到 2/3 并将 plot 宽度减小到 3 英寸,则条形宽度将与像素宽度完全相同,但它们之间的间距会更小:
x11(width = 3, height = 4)
p + geom_col(width = 2/3, color = "black")
您会注意到 plot 更窄,但无论您如何实现,这都是正确的。
您可以改为保持 plot window 的大小相同,但增加 plot 两侧的间距:
x11(width = 4, height = 4)
p + geom_col(width = 0.75, color = "black") +
scale_x_discrete(expand = c(1, 0))
或者指定坐标比而不是更改 plot window 尺寸:
p + geom_col(width = 2/3, color = "black") +
coord_fixed(1.2)
或者在 plot 中添加较大的边距:
p + geom_col(width = 2/3, color = "black") +
theme(plot.margin = margin(10, 50, 10, 50))
但是所有这些方法本质上都涉及相同的事情:如果您希望条形靠得更近但条形保持相同的大小,则必须使 plot 变窄。 链接问题中的答案确实指出了这一点,我认为这并不令人满意——这是一种几何必然性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.