如何消除ggarrange排列透明ggplot2图时图表与左侧标注间的浅灰线
解决方案
方案1:无需保留整体透明背景(最简便)
浅灰线的本质是排列图表时grob间隙的透明区域在渲染时产生的显示异常,直接在导出时给整张图片设置白色背景即可消除,修改ggsave参数即可:
ggsave(plot = figure, filename = "question.png", height = 180, width =180, units = "mm", dpi = 300, device = "png", limitsize = FALSE, bg = "white") # 新增背景参数
该方案不影响单张图表的样式,导出后插入LaTeX不会再显示灰线。
方案2:保留图表透明,仅修改左侧标注背景为白色
如果需要保留图表区域的透明属性,仅给左侧标注添加白色背景,可以用grid包构造带背景的文本grob替换原有标注:
library(grid) # 先排列4张原图 four_plots <- ggarrange(bxp,bxp1,dp,dp1, ncol = 2, nrow = 2, align = "hv") # 构造带白底的左侧标注 left_grob <- gTree( children = gList( rectGrob(gp = gpar(fill = "white", col = NA)), # 白色无边框背景 textGrob("left side ", gp = gpar(col = "black", fontsize = 10), rot = 90) ) ) # 合并标注和图表,可自行调整widths参数修改标注占比 figure <- ggarrange(left_grob, four_plots, ncol = 2, widths = c(0.05, 0.95))
方案3:全局设置组合图背景
也可以直接给最终的组合图添加白色背景,同时保留单张图表的透明设置:
figure <- figure + theme(plot.background = element_rect(fill = "white", color = NA))
内容的提问来源于stack exchange,提问作者ahmathelte
相关产品推荐
相关产品推荐

