1. ホーム
  2. r

[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?

2022-03-15 03:01:10

質問

7つの区画があり、3区画の列と4区画の列の2つに分けて整理しています。私は plot_grid から cowplot を使用します。結果はほぼ完璧ですが、3つのプロットを持つ列はプロットが大きくなっています。どのようにしたら、この列を拡大縮小して、すべてのプロットで同じサイズにし、各列の最初と最後のプロットを揃えることができるでしょうか?

library(ggplot2)
library(cowplot)

Value <- seq(0,1000, by = 1000/10)
Index <- 0:10
DF <- data.frame(Index, Value)

plot1 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot2 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot3 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot4 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot5 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot6 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot7 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

col1 <- plot_grid(plot1, plot2, plot3, align = "v", ncol = 1)
col2 <- plot_grid(plot4, plot5, plot6, plot7, align = "v", ncol = 1)
plot_grid(col1, col2, ncol = 2, align = "hv")

解決方法は?

最初のカラムにNullプロットを配置することができます。

col1 <- plot_grid(plot1, plot2, plot3, NULL, align = "v", ncol = 1)

しかし、私には、これはネストされたプロットグリッドのケースではないと思います。入れ子プロットグリッドは、特に複雑な配置のプロットを結合するためのもので、例えば、ある列の1つのプロットが別の列の2つの行にまたがっているようなものです。あなたが望むものについては、私なら単一の plot_grid() のように呼び出します。 もう一つのコメント が示唆する。

plot_grid(plot1, plot4, plot2, plot5, plot3, plot6, NULL, plot7,
          ncol = 2, align = "hv")

また align オプションは、特定のアスペクト比を指定した場合には機能しません。アスペクト比を指定するか、アライメントを指定するかのどちらかです。ほとんどの場合、アスペクト比を指定する必要はなく、図を保存するときに指定すればよいでしょう。関数 save_plot() 特に、アスペクト比のオプション(プロットエリアではなく、画像全体に適用されます)を取ります。