【发布时间】:2020-11-26 06:54:18
【问题描述】:
R 中的几个包能够将多个图排列成一个网格,例如gridExtra 和cowplot。默认情况下,同一行/列中的图在其边界上对齐。下面是一个例子。三个直方图垂直排列在同一个图上。您会注意到 x-ticks 没有对齐,因此网格图看起来有点难看。
library(ggplot2);library(grid);library(cowplot)
p1 <- ggplot(data = NULL, aes(x = rt(10,19))) +
geom_histogram(bins = 5, fill = "darkgreen", color = "darkgrey", alpha = 0.6) +
labs(y = "", x = "")
# similar plots for p2, p3
plot_grid(p1, textGrob("N=10"),
p2, textGrob("N=100"),
p3, textGrob("N=10000"),
nrow=3, rel_widths = c(4/5, 1/5))
问题是base 和ggplot2 中的绘图工具不会修复x-ticks 的长度,cowplot::plot_grid 只是自动将绘图拉伸到最大宽度。一些图有更宽的 y 标签,因此它们最终会得到更短的 x-ticks。
现在我想强制三个直方图具有相同长度的 x 刻度。我想知道这种问题有什么方法/包吗?请注意,通常数据重塑结合ggplot2::facet_wrap 之类的功能应该可以解决这个问题,但我仍然想知道是否有更直接的解决方案。
【问题讨论】:
-
阅读cowplot::plot_grid的手册,我们有对齐参数:
align = c("none", "h", "v", "hv")。
标签: r ggplot2 data-visualization gridextra cowplot