【R语言】--- 森林图

Python010

【R语言】--- 森林图,第1张

森林图(forest plot),一般是指在平面直角坐标系中,以一条垂直于X轴的无效线(通常坐标X=1或0)为中心,用若干条平行于X轴的线段,来表示每个研究的效应量大小及其95%可信区间,并用一个棱形来表示多个研究合并的效应量及可信区间,它是Meta分析中最常用的结果综合表达形式。实际上,除了Meta分析,森林图还有很多用处。森林图可以直观的反映出效应量(例如RR、OR、HR或者WMD)大小及其95% CI等。

本篇文章利用ggplot2包进行绘制森林图(严格意义上应该叫meta分析效应量图),关于ggplot2的基本用法这里不在叙述。

这里想用发表在SBB上的一篇meta分析文章( https://doi.org/10.1016/j.soilbio.2020.108118 )中的图作为模板,进行绘制。

[1] https://zhuanlan.zhihu.com/p/340207465

[2] Feng, J. G., Zhu, B., 2021. Global patterns and associated drivers of priming effect in response to nutrient addition. Soil Biology and Biochemistry 153, 108118. https://doi.org/10.1016/j.soilbio.2020.108118 .

森林图常见于元分析,但其使用绝不仅如此,比如我现在想要研究的对象有诸多HR结果,我想要汇总为一张图,森林图就是个非常好的选择。 ggpubr 包提供的森林图是针对变量分析绘图,我也尝试使用了 metafor 包的 forest 画图函数,但太灵活了,我除了感觉文档画的不错,但实际使用却很难得到想要的结果。

谷歌了一下,找到了 forestplot 这个包,下面根据 文档 学习一波。

安装:

森林图可以与文本连接起来并自定义。

下面是一个使用文本表的例子:

在上面基础进行增改:

我们可以修改线条类型和它所影响的范围:

为端点增加垂线:

还可以更改风格:

简单的,给超出范围的区间加箭头(clip):

这在对比时非常有用:

可以用方块、圆圈等:

添加一个基本图例:

通过设定参数可以进一步自定义:

我们可以手动设定想要的刻度

我们可以给想要的刻度加标签:

如果图形太高我们可能还需要增加辅助线以显示对应的刻度:

最后我们可以自定义想要的网格:

下面两种 structure 的书写方式是一致的:

文章作者 王诗翔

上次更新 2018-09-10

许可协议 CC BY-NC-ND 4.0