如何在Rmd文件中为基础绘图及ggplot2图形统一设置透明背景?
如何在Rmd文件中为基础绘图及ggplot2图形统一设置透明背景?
嗨,我来帮你搞定这个问题!要在生成PPT的Rmd文件里给所有图形(不管是R基础绘图还是ggplot2)统一设置透明背景,其实不用逐个图形修改,只需要在knitr的初始化代码块里做两处设置就行,省心又高效。
具体操作步骤:
- 处理基础绘图(比如
plot()、hist()这类原生函数绘制的图):在knitr::opts_chunk$set()中添加dev.args = list(bg = "transparent"),这会告诉绘图设备生成带透明背景的图片,插入PPT后就能完美适配你的模板背景。 - 处理ggplot2图形:用
theme_set()设置全局主题,把绘图区域、面板区域甚至图例的背景都设为透明,这样所有后续的ggplot图都会自动继承这个设置,不用每次手动加theme参数。
把这些整合到你的setup代码块里,修改后的代码如下:
knitr::opts_chunk$set( echo=TRUE, results='markup', # 给基础绘图指定透明背景 dev.args = list(bg = "transparent") ) options(width=80, show.signif.stars=FALSE) # 加载ggplot2并设置全局透明主题 library(ggplot2) theme_set(theme_bw() + theme( panel.background = element_rect(fill = "transparent"), plot.background = element_rect(fill = "transparent", color = NA), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent") ))
小补充:
plot.background负责整个绘图区域的背景透明,panel.background是面板内部的背景,加上图例相关的设置是为了避免图例区域出现违和的色块。- 因为你输出的是PPT,knitr默认会把图形转成图片插入,这个方法完全适配这种输出格式,不用担心兼容性问题。
备注:内容来源于stack exchange,提问作者striatum




