使用して 2 つの ggplot オブジェクトを結合しcowplot::plot_grid()
、それらを垂直方向に揃えようとしています。これは通常、 を使用すると非常に簡単align = "v"
です。
dat1 <- data.frame(x = rep(1:10, 2), y = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point()
cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v")
ただし、アスペクト比が強制されている場合は軸を変更できないcoord_equal()
ため、ggplots を使用する場合、このアプローチは失敗します。plot_grid()
代わりに、デフォルトでは、各プロットの高さを同じに保ちます。
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()
cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v")
試行錯誤して適切な議論を得ることで目的を強制することはできrel_heights
ますが、構築する動的なプロットが多数あるため、これは実行可能な解決策ではありません。ここでは、y 軸が整列されており、すべての軸の座標は依然として同じです。
cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v", rel_heights = c(2, 1.07))
と を利用する同様の質問に対する多くのアプローチを見てきましたが、 を使用するggplot2::ggplotGrob()
とgrid::grid_draw()
、この問題にまったく対処できませんcoord_equal()
。おそらく、最善の解決策はまったく使用しないcowplot::plot_grid()
か、何らかの方法で適切な値を動的に決定して に渡すことrel_heights
です。付属の他の機能を簡単に使用できるようにするために、後者のオプションを好むと思いますcowplot::plot_grid()
。おそらく、この関連するアプローチで、いくつかの有用なインスピレーションを見つけることができます。