如何设置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
相关产品推荐
相关产品推荐

