[英]Increase space between axis.title and axis.text in ggplot2 (version >= 0.9.0)
[英]Adjust spacing between subplots of panel figure (ggplot) in case of different axis.title/text properties
当某些图包含轴标题/标签而其他图不包含时,我想使用cowplot
package 调整面板中对齐的图之间的间距。
例子
让我们创建三个图:
library(tidyverse)
library(cowplot)
set.seed(123)
df <- data.frame(x = rnorm(n = 100),
y = rnorm(n = 100))
plot <- ggplot(data = df, aes(x, y)) + geom_point()
plot_grid(plot, plot, plot, nrow = 1, align = "vh")
这些情节完美地对齐,但经常。 我有一个场景,我想创建一个“更干净”的面板图。 一种方法是删除第二个和第三个图的 y 轴的标题/文本。
像这样:
plot2 <- plot + theme(axis.title.y = element_blank(),
axis.text.y = element_blank())
plot_grid(plot, plot2, plot2, nrow = 1, align = "vh")
同样,完美对齐,但第一个和第二个 plot(以及第二个和第三个图)之间的间距非常大。 我想减少间距以创建更紧凑的 plot,同时轴保持完全相同的尺寸。
预期 output
这可能与cowplot
吗? 还是有其他方法可以做到这一点?
参考github 上的这篇文章, plot_grid()
默认不添加任何空格,并使用 plot 的边距。 要删除 plot 区域之外的空间,可以使用them(plot.margin=...)
来删除。
话虽如此......这不是这里发生的事情! 打印plot
或plot2
将产生没有边距的 plot。 看来问题在于在plot_grid()
中使用了align=
参数。 我不知道为什么,但是将其设置为默认值( align="none"
)以外的任何值都会导致绘图周围出现额外的空白。 很奇怪...不用说,删除该论点可以解决您的问题:
plot_grid(plot, plot2, plot2, nrow = 1, align="vh")
plot_grid(plot, plot2, plot2, nrow = 1, align="none")
将根据您的图形设备添加任何更多空间,因为您获得的实际 plot 取决于该设备的大小和分辨率。
这是使用patchwork
的 package 的解决方案
library(tidyverse)
set.seed(123)
df <- data.frame(x = rnorm(n = 100),
y = rnorm(n = 100))
plot1 <- ggplot(data = df, aes(x, y)) + geom_point()
plot2 <- plot1 + theme(axis.title.y = element_blank(),
axis.text.y = element_blank())
# install.packages("patchwork", dependencies = TRUE)
library(patchwork)
plot1 + plot2 + plot2 +
plot_layout(ncol = 3)
由代表 package (v0.3.0) 于 2020 年 7 月 24 日创建
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.