複数のrプロットに同じ長さのxティックを強制する方法は?[複製]
Rのいくつかのパッケージは、次のような、グリッドにmulitpleプロットを手配することができますgridExtra
とcowplot
。同じ行/列のプロットは、デフォルトで境界に揃えられます。以下はその一例です。3つのヒストグラムが同じプロットに垂直に配置されています。xティックがアルグされていないため、グリッドプロットが少し見苦しいことがわかります。
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-ティックの長さを固定しないだろうとcowplot::plot_grid
だけで、自動的に最大幅にプロットを伸ばします。一部のプロットには幅の広いyラベルがあるため、xティックが短くなります。
次に、3つのヒストグラムに同じ長さのxティックを強制します。この種の問題の方法/パッケージはありますか?通常、データの再形成とのような機能を組み合わせるggplot2::facet_wrap
ことでこの問題を解決できるはずですが、もっと直接的な解決策があるかどうかはまだ疑問です。
回答
個人的には、パッチワークがプロットの配置を適切に処理し、共通のスケールで制限を設定することで、プロットにx軸を共有させることができると思います。
library(ggplot2)
library(patchwork)
set.seed(123)
plots <- lapply(c(10, 100, 1000), function(n) {
ggplot(mapping = aes(x = rt(n, 19))) +
geom_histogram(bins = round(sqrt(n)) * 2,
fill = "darkgreen", colour = "darkgrey",
alpha = 0.6) +
labs(y = "", x = "")
})
plots[[1]] / plots[[2]] / plots[[3]] &
scale_x_continuous(limits = c(-5, 5),
oob = scales::oob_squish)
reprexパッケージ(v0.3.0)によって2020-11-26に作成されました
このplot_grid()
関数はプロットを整列させることができます。ここを参照してください:https://wilkelab.org/cowplot/articles/aligning_plots.html
library(ggplot2)
library(grid)
library(cowplot)
set.seed(123)
plots <- lapply(c(10, 100, 1000), function(n) {
ggplot(mapping = aes(x = rt(n, 19))) +
geom_histogram(bins = round(sqrt(n)) * 2,
fill = "darkgreen", colour = "darkgrey",
alpha = 0.6) +
labs(y = "", x = "") +
scale_x_continuous(
limits = c(-5, 5),
oob = scales::oob_squish
)
})
plot_grid(
plots[[1]], textGrob("N=10"),
plots[[2]], textGrob("N=100"),
plots[[3]], textGrob("N=10000"),
nrow=3, rel_widths = c(4/5, 1/5), align = "v", axis = "l"
)
reprexパッケージ(v0.3.0)によって2020-11-26に作成されました