You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置VennDiagram与ggplot2图表的字体大小保持一致

VennDiagram与ggplot2字体大小统一方案

首先明确两个绘图体系的字号参数逻辑:

  • ggplot2的size字号单位为磅(pt),是绝对字号
  • VennDiagram的cex类参数是缩放系数,字号计算逻辑为:实际字号(pt) = cex * 基础字号,R绘图系统默认基础字号为12pt

要让两者标题字号一致,按以下步骤调整即可:

步骤1:统一导出配置

首先保证两张图的导出参数(单位、画布尺寸、分辨率)完全一致,避免导出后因画布缩放导致字号视觉差异。你现有ggplot导出参数为units="in", width=9.9, height=3.3, res=600,韦恩图也需要对齐该配置。

步骤2:调整字号参数

方案A:调整韦恩图匹配ggplot的8pt标题

按换算公式,要得到8pt的标题,main.cex取值为 8 / 12 ≈ 0.667,同时需要补充字体参数对齐Times New Roman的设置,修改后的韦恩图代码如下:

set1 <- paste(rep("word_" , 200) , sample(c(1:1000) , 200 , replace=F) , sep="")
set2 <- paste(rep("word_" , 200) , sample(c(1:1000) , 200 , replace=F) , sep="")
set3 <- paste(rep("word_" , 200) , sample(c(1:1000) , 200 , replace=F) , sep="")

# 对齐ggplot的导出配置
tiff("14_venn_diagramm.tiff", units="in", width=9.9, height=3.3, res=600)
venn.diagram(
  x = list(set1, set2, set3),
  category.names = c("Set 1" , "Set 2 " , "Set 3"),
  main = "Figure 1",
  # 换算得到匹配8pt的cex值
  main.cex = 8/12,
  # 统一字体为Times New Roman
  main.fontfamily = "Times New Roman",
  cat.fontfamily = "Times New Roman",
  # 禁用内置导出,直接写入已开启的tiff设备
  filename = NULL
)
dev.off()

方案B:调整ggplot匹配韦恩图的1.8倍cex标题

如果要保留韦恩图的main.cex=1.8设置,对应ggplot的标题size取值为 1.8 * 12 = 21.6,修改ggplot的主题参数即可:

ggplot(data, aes(x=name, y=value)) + 
  geom_bar(stat = "identity") +
  # 调整size为21.6匹配韦恩图标题
  theme(plot.title = element_text(size = 21.6)) +
  theme(text = element_text(family = "Times New Roman")) +
  labs(title = "Figure 2.", y = NULL, x= NULL, fill = NULL)

如果修改过全局基础字号par("ps"),把上述换算公式里的12替换为你设置的基础字号值即可。

内容的提问来源于stack exchange,提问作者arto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:15:07