如何去除ggplot绘制的ggvenn韦恩图的空白边距?
解决ggvenn绘图后ggsave保存存在大量空白边距的问题
方法1:调整坐标系并关闭扩展
ggplot2的坐标系默认会保留一定扩展空间,给韦恩图添加coord_fixed(expand = FALSE)可以让绘图区域紧贴图形边界,这是解决空白边距的核心步骤。修改后的完整代码如下:
library(ggvenn) library(ggplot2) library(tibble) d <- tibble(value = c(1, 2, 3, 5, 6, 7, 8, 9), `Set 1` = c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE), `Set 2` = c(TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE), `Set 3` = c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE), `Set 4` = c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE)) p2 = ggplot(d, aes(A = `Set 1`, B = `Set 2`)) + geom_venn(fill_color = c("white", "white"), show_percentage = FALSE) + theme(axis.line=element_blank(), panel.background = element_rect(fill = "white",colour = "white"), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position="none", panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), plot.background=element_blank(), plot.margin=grid::unit(c(0,0,0,0), "mm")) + coord_fixed(expand = FALSE) # 添加此行关闭坐标系扩展空间 # 保存时匹配韦恩图的正方形比例 ggsave(plot = p2, filename = "plot2.tiff", width = 4, height = 4, units = "cm", dpi = 300)
方法2:精准控制ggsave的保存尺寸
如果仍有少量空白,可以进一步调整ggsave的宽高参数(2组韦恩图为正方形,宽高需设为相同值),同时指定设备参数优化输出:
ggsave(plot = p2, filename = "plot2.tiff", width = 3.5, height = 3.5, units = "cm", dpi = 300, device = tiff, compression = "lzw")
方法3:用egg包强制固定面板尺寸
若前两种方法效果不佳,可借助egg包精准设置绘图面板大小,彻底消除多余空白:
library(egg) # 未安装包的话先执行:install.packages("egg") p2_fixed <- set_panel_size(p2, width = unit(3, "cm"), height = unit(3, "cm")) ggsave(plot = p2_fixed, filename = "plot2.tiff", width = 3, height = 3, units = "cm", dpi = 300)
关键注意点
par(mar=c(0,0,0,0))对ggplot2无效,因为ggplot2使用独立的theme系统控制边距,不依赖base绘图的par参数。- 保存时的宽高必须匹配韦恩图的比例(2组为正方形,多组需对应图形比例),避免因尺寸比例失衡产生空白。
内容的提问来源于stack exchange,提问作者user21165666
相关产品推荐
相关产品推荐

