I am trying to combine two FACETED ggplot objects with coord_equal()
using cowplot::plot_grid()
or egg::ggarrange()
and vertically align them.
The egg::ggarrange()
approach works fine for UNFACETED plots, with the solution posted here.
However, the egg::ggarrange()
solution breaks down when faceting is included. The plots are correctly aligned, but the units of the y-axes are twice as large as those of the x-axes. Any suggestions for how to generalize this for faceting?
dat1 <- data.frame(x = rep(1:10, 2), y = 1:20, z = rep(c("A", "B"), 10))
dat2 <- data.frame(x = 1:10, y = 1:10, z = rep(c("A", "B"), 5))
plot1 <- ggplot(dat1, aes(x=x, y=y)) +
geom_point() + coord_equal() + facet_wrap(~z)
plot2 <- ggplot(dat2, aes(x=x, y=y)) +
geom_point() + coord_equal() + facet_wrap(~z)
egg::ggarrange(plot1, plot2, ncol = 1)
it seems to be a simple fix,
The main problem is that
plot1
andplot2
have different aspect ratios. This isplot1
:And this
plot2
:You can try to keep the aspect ratio using, i.e.
theme(aspect.ratio=1)
instead ofcoord_equal()
:Hope it serves.