20
You can use the following syntax to create a transparent background in a plot in ggplot2:
p + theme( panel.background = element_rect(fill='transparent'), #transparent panel bg plot.background = element_rect(fill='transparent', color=NA), #transparent plot bg panel.grid.major = element_blank(), #remove major gridlines panel.grid.minor = element_blank(), #remove minor gridlines legend.background = element_rect(fill='transparent'), #transparent legend bg legend.box.background = element_rect(fill='transparent') #transparent legend panel )
If you decide to export the plot using ggsave(), be sure to specify that the background should be transparent:
ggsave('myplot.png', p, bg='transparent')
The following example shows how to use this syntax in practice.
Example: Use a Transparent Background in ggplot2
The following code shows how to create a simple grouped boxplot in ggplot2:
library(ggplot2) #make this example reproducible set.seed(1) #create dataset data frame(team=rep(c('A', 'B', 'C'), each=50), program=rep(c('low', 'high'), each=25), values=seq(1:150)+sample(1:100, 150, replace=TRUE)) #create boxplot ggplot(data, aes(x=team, y=values, fill=program)) + geom_boxplot()
We can use the following code to create a transparent background for the plot:
library(ggplot2) #make this example reproducible set.seed(1) #create dataset data frame(team=rep(c('A', 'B', 'C'), each=50), program=rep(c('low', 'high'), each=25), values=seq(1:150)+sample(1:100, 150, replace=TRUE)) #create boxplot p aes(x=team, y=values, fill=program)) + geom_boxplot() + theme( panel.background = element_rect(fill='transparent'), plot.background = element_rect(fill='transparent', color=NA), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), legend.background = element_rect(fill='transparent'), legend.box.background = element_rect(fill='transparent') ) #display boxplot p
We can then export this plot to a PNG file, specifying that the background should be transparent in the exported image:
ggsave('grouped_boxplot.png', p, bg='transparent')
If I open this exported file on my computer, I can see that the background is indeed transparent:
Additional Resources
How to Change Font Size in ggplot2
How to Remove a Legend in ggplot2
How to Remove Gridlines in ggplot2