Change background color of combined plots in ggpubr::ggarrange

My ggplot

I can’t figure out why the bottom corners background is white, while the rest of the plot is grey. Is there anyway I can change the bottom corners color to the same background as the rest of the plot?

The code im using for each plot is:

HP_specifikationer_model1 <- ggplot(Svar_spec_data)+geom_hline(yintercept=0)
geom_line(aes(y=HP1, x=kvartaler, color = "HP-BNP-KRE-REN")) +
geom_line(aes(y=HP2, x=kvartaler, color = "REN-KRE-HP-BNP")) +
geom_line(aes(y=HP3, x=kvartaler, color = "BNP-KRE-REN-HP")) +
geom_line(aes(y=HP4, x=kvartaler, color = "KRE-HP-REN-BNP")) +
geom_line(aes(y=HP5, x=kvartaler, color = "BNP-KRE-HP-REN")) +
geom_line(aes(y=HP6, x=kvartaler, color = "BNP-REN-HP-KRE")) +
geom_line(aes(y=HP7, x=kvartaler, color = "REN-HP-BNP-KRE")) +
                 breaks=c('HP-BNP-KRE-REN', 'REN-KRE-HP-BNP', 'BNP-KRE-REN-HP',
                          'KRE-HP-REN-BNP', 'BNP-KRE-HP-REN', 'BNP-REN-HP-KRE',
                 values=c('HP-BNP-KRE-REN'='red', 'REN-KRE-HP-BNP'='blue', 'BNP-KRE-REN-HP'='green',
                          'KRE-HP-REN-BNP'='cyan', 'BNP-KRE-HP-REN'='lightpink', 'BNP-REN-HP-KRE'='orange',
labs(title = "Varrierende SVAR matricer ved stød til Boligpriserne", x="Lag (Måneder)", y="Respons fra boligprisen", caption = "Egne beregninger", color= T)+
theme(legend.position="right") + theme(panel.grid.minor.x = element_blank()) + th

The th at the end of the code is defined with this code:

th <- theme(title = element_text(colour = "#404040"),
        panel.background = element_rect(fill="#f3f3f3"), 
        legend.background = element_rect(fill="#f3f3f3"),
        plot.subtitle = element_text(color="#666666"),
        plot.caption = element_text(color="#616161", size=9),
        legend.key = element_rect(fill = "#f3f3f3", colour = "#f3f3f3"),
        plot.margin = unit(c(0.5, 0.7, 0.5, 0.7), "cm"), 
        panel.border = element_rect(color = "black",
                                fill = NA,
                                size = 0.15))

The code im using is to arrange my plots is:

ncol=2, nrow=2, common.legend = TRUE, legend="bottom")

>Solution :

I think in ggpubr, you can use bgcolor

Given that your data is not reproducible, here a made up example.

You can also use cowplot, such as in this thread

#> Loading required package: ggplot2
# Create some plots - based on the example ?ggpubr::ggarrange
df <- ToothGrowth
df$dose <- as.factor(df$dose)
bxp <- ggboxplot(df, x = "dose", y = "len",
                 color = "dose", palette = "jco")
dp <- ggdotplot(df, x = "dose", y = "len",
                color = "dose", palette = "jco")
dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco")

# ::::::::::::::::::::::::::::::::::::::::::::::::::
ggarrange(bxp, dp, dens, ncol = 2, nrow = 2) + bgcolor("Grey")         
#> Bin width defaults to 1/30 of the range of the data. Pick better value with `binwidth`.

Created on 2022-05-26 by the reprex package (v2.0.1)

Leave a Reply