ggarrange合并绘图后ggsave导出PNG图例周边空白缺失问题求助
解决ggarrange合并图后图例周边空白未填充白色的问题
以下几种方法可快速解决该问题,让图例及周边空白区域变为白色,适配LaTeX的显示需求:
方法1:ggsave导出时直接指定背景色
这是最简便的方案——PNG格式默认背景透明,只需在ggsave中添加bg="white"参数,即可强制填充所有空白区域为白色:
ggsave(uni11, filename = "file.png", path = "~/path", width = 24, height = 8, units = "cm", dpi=700, bg = "white") # 新增背景色参数
方法2:为子图设置统一背景主题
在每个ggplot子图的theme里,明确设置子图背景和图例背景为白色,从源头确保区域颜色正确:
g11 = ggplot() + geom_smooth(se = F, data = df, aes(x = sc, y = changes, color = factor(nr), group = factor(nr))) + scale_color_viridis(discrete = TRUE, option = "D")+ scale_fill_viridis(discrete = TRUE) + theme( legend.position = "bottom", plot.background = element_rect(fill = "white", color = NA), # 子图背景设为白色 legend.background = element_rect(fill = "white", color = NA) # 图例背景设为白色 ) g21 = ggplot() + geom_smooth(se=F, data = df, aes(x = sc, y = changes, color = factor(nr), group = factor(nr))) + scale_color_viridis(discrete = TRUE, option = "D")+ scale_fill_viridis(discrete = TRUE) + theme( legend.position = "bottom", plot.background = element_rect(fill = "white", color = NA), legend.background = element_rect(fill = "white", color = NA) ) uni11=ggarrange(g11, g21, ncol=2, common.legend = TRUE, legend="bottom") ggsave(uni11, filename = "file.png", path = "~/path", width = 24, height = 8, units = "cm", dpi=700)
方法3:通过ggarrange设置整体背景
利用ggpubr包ggarrange自带的background参数,为合并后的整个图形统一设置白色背景:
uni11=ggarrange(g11, g21, ncol=2, common.legend = TRUE, legend="bottom", background = element_rect(fill = "white", color = NA)) # 设置整体背景 ggsave(uni11, filename = "file.png", path = "~/path", width = 24, height = 8, units = "cm", dpi=700)
优先推荐方法1,操作简单且能覆盖所有空白区域的填充需求。
内容的提问来源于stack exchange,提问作者Karl Seidl
相关产品推荐
相关产品推荐

