如何使用ggplot2在R中使用透明背景制作graphics?

我需要输出ggplot2graphics从R到透明背景的PNG文件。 基本的Rgraphics一切都好,但ggplot2没有透明度:

d <- rnorm(100) #generating random data #this returns transparent png png('tr_tst1.png',width=300,height=300,units="px",bg = "transparent") boxplot(d) dev.off() df <- data.frame(y=d,x=1) p <- ggplot(df) + stat_boxplot(aes(x = x,y=y)) p <- p + opts( panel.background = theme_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = theme_blank(), panel.grid.major = theme_blank() ) #returns white background png('tr_tst2.png',width=300,height=300,units="px",bg = "transparent") p dev.off() 

有什么办法获得与ggplot2透明背景?

除了panel.background还有一个plot.background选项:

 df <- data.frame(y=d,x=1) p <- ggplot(df) + stat_boxplot(aes(x = x,y=y)) p <- p + opts( panel.background = theme_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = theme_blank(), panel.grid.major = theme_blank(), plot.background = theme_rect(fill = "transparent",colour = NA) ) #returns white background png('tr_tst2.png',width=300,height=300,units="px",bg = "transparent") print(p) dev.off() 

出于某种原因,上传的图像显示不同于我的电脑,所以我省略了它。 但是对于我来说,除了箱子里仍然是白色的盒子外,我会得到一个完全灰色背景的情节。 我相信,这可以通过boxplot geom中的填充美感来改变。

编辑

ggplot2已经被更新, opts()函数已被弃用。 目前,您将使用theme()而不是opts()element_rect()来代替theme_rect()等。

更新了theme()函数, ggsave()和图例背景的代码:

 df <- data.frame(y = d, x = 1, group = rep(c("gr1", "gr2"), 50)) p <- ggplot(df) + stat_boxplot(aes(x = x, y = y, color = group) , fill = "transparent" # for the inside of the boxplot ) p <- p + theme( panel.background = element_rect(fill = "transparent") # bg of the panel , plot.background = element_rect(fill = "transparent") # bg of the plot , panel.grid.major = element_blank() # get rid of major grid , panel.grid.minor = element_blank() # get rid of minor grid , legend.background = element_rect(fill = "transparent") # get rid of legend bg , legend.box.background = element_rect(fill = "transparent") # get rid of legend panel bg ) p 

或者使用rect,因为所有矩形元素都从rectinheritance:

 p <- p + theme( rect = element_rect(fill = "transparent") # bg of the panel ) p ggsave(p, filename = "tr_tst2.png", bg = "transparent")