繁体   English   中英

如何在使用 ggplot2 制作的 geom_bar plot 中减少条之间的间距而不增加它们的宽度?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM