如何修改R语言metafor包森林图的字体?
字体差异原因
- 官网预览图的字体依赖其展示环境的默认配置,比如可能用了Windows系统的Calibri、Mac的Helvetica Neue,或是服务器端的特定字体;而你的R环境默认绘图字体是Arial,这是不同系统/设备的默认字体设置差异导致的。
- 官网提供的代码本身没有显式指定字体,运行时会调用你本地R环境的默认绘图字体。
修改森林图字体的方法
metafor的森林图基于base绘图系统,以下几种方法可修改字体:
方法1:通过par()设置全局字体
在绘制森林图前,用par()指定字体族,比如改成Times New Roman:
# 设置全局字体 par(family = "Times") # 运行你复制的森林图代码 forest(...) # 替换为官网的森林图绘制代码
注意:不同系统支持的字体族名称有差异,Windows下"Times New Roman"需写为"Times New Roman",Mac/Linux下可能是"Times"或"serif"。
方法2:用extrafont包加载自定义字体
如果想使用系统内的其他字体(如微软雅黑、思源黑体),可借助extrafont包:
# 安装并加载包 install.packages("extrafont") library(extrafont) # 第一次运行需导入系统字体 font_import() # 加载字体库 loadfonts() # 设置字体为思源黑体(示例) par(family = "Source Han Sans SC") # 绘制森林图 forest(...)
注意:导入字体耗时较长,且不同系统的字体名称需对应准确,比如Windows下"微软雅黑"的名称是"Microsoft YaHei"。
方法3:用ggplot2重构森林图(可选)
若熟悉ggplot2,可结合metafor用它绘制森林图,字体控制更灵活:
library(metafor) library(ggplot2) # 以官网示例数据为例,先获取效应量结果 dat <- dat.bcg res <- rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat, measure="RR", slab=paste(author, year, sep=", ")) # ggplot2绘制森林图并指定字体 ggplot(res, aes(x=yi, y=seq_along(yi))) + geom_point(size=3) + geom_errorbarh(aes(xmin=ci.lb, xmax=ci.ub), height=0.2) + geom_vline(xintercept=0, linetype="dashed") + scale_y_continuous(breaks=seq_along(res$yi), labels=res$slab) + theme(text = element_text(family = "Times New Roman"))
内容的提问来源于stack exchange,提问作者user19745561
相关产品推荐
相关产品推荐

