Bishnu Hari Wagle
Bishnu Hari Wagle

Reputation: 43

Customize position of common legend in R

I need to arrange multiple plots with common legend in a single page and used following code:

library(ggpubr)
ggarrange(fig1, fig2, fig3, nrow=2, ncol=2, common.legend = TRUE, legend="right")

Now, I'm wondering if there are other packages/ways where I can customize position of the common legend since the 'ggarrange' has only 'top', 'bottom', 'right', 'left' and 'none' options for this. Since second row and second column is empty, I want the legend be appeared there.

Upvotes: 2

Views: 1108

Answers (1)

jared_mamrot
jared_mamrot

Reputation: 26695

Perhaps the cowplot package will work?

Minimal Reproducible Example:

library(tidyverse)
library(ggpubr)

fig1 <- ggplot(mtcars, aes(x = hp, y = mpg)) +
  geom_point()
fig2 <- ggplot(mtcars, aes(x = cyl, y = mpg, group = cyl, fill = factor(cyl))) +
  geom_boxplot() +
  scale_fill_viridis_d()
fig3 <- ggplot(mtcars, aes(x = disp, y = mpg)) +
  geom_point()

ggarrange(fig1, fig2, fig3, nrow=2, ncol=2, common.legend = TRUE, legend="right")

example_1.png

Using the cowplot package:

library(cowplot)
legend <- get_legend(fig2)
fig2_no_legend <- ggplot(mtcars, aes(x = cyl, y = mpg, group = cyl, fill = factor(cyl))) +
  geom_boxplot() +
  scale_fill_viridis_d() +
  theme(legend.position = "none")

cowplot::plot_grid(fig1, fig2_no_legend, fig3, legend, nrow = 2, ncol = 2)

example_2.png

Upvotes: 3

Related Questions