4

次のコードは以前は機能していましたが、機能しなくなりました。何が起こっているのか誰にも分かりますか?これは、基になる gtable コードの変更に違いありません。

require(cowplot) # for plot_grid()
require(grid) # for unit_max()

# make two plots
plot.iris <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + 
  geom_point() + facet_grid(. ~ Species) + stat_smooth(method = "lm") +
  background_grid(major = 'y', minor = "none") + 
  panel_border()
plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5)

g.iris <- ggplotGrob(plot.iris) # convert to gtable
g.mpg <- ggplotGrob(plot.mpg) # convert to gtable

iris.widths <- g.iris$widths[1:3] # extract the first three widths, 
                                  # corresponding to left margin, y lab, and y axis
mpg.widths <- g.mpg$widths[1:3] # same for mpg plot
max.widths <- unit.pmax(iris.widths, mpg.widths) # calculate maximum widths
g.iris$widths[1:3] <- max.widths # assign max. widths to iris gtable
g.mpg$widths[1:3] <- max.widths # assign max widths to mpg gtable

plot_grid(g.iris, g.mpg, labels = "AUTO", ncol = 1)

結果のプロットは次のとおりです。 ここに画像の説明を入力

これは次のようになります (y 軸の線が垂直に完全に整列されています)。 ここに画像の説明を入力

エラーは次の行で発生しているようです。

g.iris$widths[1:3] <- max.widths

任意の洞察をいただければ幸いです。

同様のソリューションが長い間使用されてきたことに注意してください。たとえば、こちらを参照してください。そして、plot_grid()Cowplot の関数は、このようなコードを使用してプロットを整列させますが、それでも機能します。だから、これは私を完全に当惑させました。

4

1 に答える 1