cowplot::plot_grid()
我正在尝试使用并垂直对齐两个 ggplot 对象。这通常很简单,使用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")
但是,当使用 ggplots 时,这种方法会失败,coord_equal()
因为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()
我已经看到了许多使用and来解决类似问题的方法grid::grid_draw()
,但是在使用时没有什么能解决这个问题coord_equal()
。也许最好的解决方案根本不使用cowplot::plot_grid()
,或者解决方案可能以某种方式动态确定并将正确的值传递给rel_heights
. 我想我更喜欢后面的选项,以便能够轻松使用cowplot::plot_grid()
. 或许可以从这个相关的方法中找到一些有用的灵感。