Excel制作森林图详细教程

每次小黑屋开组会,看到大家画的亚组分析森林图,简洁明了地表达了各个变量的关系,而且风格和表格融为一体,挺有大刊风格的。

内心羡慕之余,又怒于自己不会做……

不会做可以学,瞪眼生闷气是没用的。

其实这个图真的是NEJM的好好看

网上关于森林图制作的教程五花八门,可以使用的软件也很多:R,Revman,Prism Graphpad,Sigmaplot等等都可以,操作的难度大小不一,做出来的图表风格都会有所差异。

笔者看花了眼不知道要选哪个的时候,小火龙师兄提醒了一下:“这个图啊?用Excel就可以做的啊~”

笔者在惊掉下巴的同时,在网上找了些教程,结合自己的实践,磕磕碰碰也做了一个出来。

于是今天给大家分享下如何用Excel制作亚组分析的森林图。

其实做个图,基本的原理也就是:提供数据生成主体(均值、区间、权重),图表组件定制(量程、坐标轴、辅助线),以及图表内容结合。

Lancet的图也是挺美观的,目测这个是用Revman出了图之后再经杂志社重绘。

一般森林图包含如下内容:

躺着的坐标轴
垂直的无效线:分析指标是连续变量时取0,二分类变量则取1
平行线:长度代表各个效应值的置信区间
黑点:各个效应值的估计值
黑点外方框:权重,方框越大,权重越大
平行线的箭头:效应值的置信区间超出了坐标轴的范围
菱形宽度:Meta分析中汇总结果的置信区间
菱形中心:Meta分析中汇总结果的估计值

 

而在绘制亚组分析的森林图时候,代表权重的方框和代表汇总结果的菱形是不需要的,当然这两个玩意儿在Excel是做不出来的,还是得老老实实用Revman或者R才行。

那下面咱们开干。

把亚组分析的结果整理成表

估计值、95%CI上下界:根据统计软件算出来填进去。

无效线:分析指标是连续变量时整列无效线值取0,二分类变量则取1。

Y轴:建立这个Y轴其实是为了各个数据能垂直排列,个人建议倒序来排,否则生成的图与原表格数据相比会上下颠倒,注意空行也要填好数字,不要留空。最后一行的下一行定为0,然后往上递增(如果把“0”这一行删掉,或者把最后一行定为0,你们可以试试会变成啥样子的)。

正差、负差:用公式算出,下面会用到这两列数据来生成95%CI的线段。

变量间空行(标黄部分):变量之间留一个空行,生成的图也会隔一个空行。

估计值的散点图

选择估计值那一列数据 – 插入 – 图表 – 散点图

在Excel自动生成了一个散点图之后,我们先把没有用的Y轴、纵横向网格线、图表标题依次选上按delete键删掉。

这图让我想起一句歌词的调调……秃秃的头皮,点点的头屑

看到估计值的分布并不符合我们的预期,下面对散点图的数据作修改。点图边的漏斗,点“选择数据” – 编辑 – 依次修改好X、Y轴系列值 – 确定

点了确定之后就如下图所示,可以看到估计值的点已经按X轴的方向来排列了。

添加区间线

点图旁+号,勾选误差线,就可以看到每个点都出现了垂直和水平的误差线,当然我们只需要保留水平的误差线就可以了,在图中选中垂直的误差线,按delete键即可删除。

随后要设置水平误差线的区间,双击水平误差线,在右侧的设置窗格中“误差量”一项选择自定义 – 指定值 – 选择正确的正负差数据列 – 确定。

做出来的效果就是这样。

添加无效线(以x=1为例)

点击图旁漏斗图标 – “选择数据” – 添加 – 选取X、Y列数据 – 确定 – 点击图中新生成的一列数据点 – 右侧窗格油漆桶 – 线条部分选择“实线” – 点击右侧标记选项 – 数据标记选项选择“无”

有的小伙伴可能会新增其他参考线或者设置成虚线,新增的话只需要在数据表中添加所需定值的数据列,依同样方法生成即可,虚线的话可以在线条选项处设置。

设置坐标轴

点击坐标轴可以设置范围、单位长度和刻度线,如果有需要改成对数的话可以勾选下面那个显示不全的“对数刻度”。

不过在这里不得不提到一个局限性,就是坐标轴只能设置等差或者对数,而且不能添加自定义的刻度值

 

超出范围的95%CI如何处理

 

如果你的坐标轴范围设置得比较小,或者数据的95%CI比较宽,难免会出现95%CI显示不全的情况,这个时候就要单独给这些数据线段加上箭头。

我们发现这个图中有四处地方超出坐标轴范围,因此在原来数据表旁边新建两列,依次计算对应数据的顶格上下界,算好之后留着备用

以第一个数据的处理为例,点击图旁漏斗图标 – “选择数据” – 添加 – X、Y选取超出范围的单个数据点的估计值和Y轴的值(只选取一个格子哦不要整列选中) – 确定

于是图中就会新生成一个颜色不同的数据点,选中这个单独的数据点 – 右侧加号 – 勾选误差线 – 更多选项 – 正偏差(若处理坐标轴左边数据的箭头,则选择“负偏差”) – 无线端 – 自定义 – 指定值中,正错误值设置为新算出来的加箭头正差0.277,负错误值仍设置为原来的负差(若处理坐标轴左边数据的箭头,则正差选择原来的,负差选择新算出来的负差) – 确定

然后点击上方油漆桶 – 结尾箭头类型选择为箭头就OK啦

处理之后效果如下图所示

到这里基本上就完成了95%了,剩下的就是简单功夫了:

  • 调整图表尺寸和比例以符合表格要求
  • 把数据点的颜色改成黑色
  • 设置坐标轴和无效线的粗细并保持一致
  • 把图表的背景和边框改成透明
  • 选中图表区域复制到别的地方,复制之前在视图窗口把网格线先隐藏了,粘贴的时候选择“选择性粘贴” – “图片”格式粘贴

理论上这个时候已经完成了,结果小火龙师兄说:“把坐标轴和表格底线合并起来吧。”

我:????

森林图最底的一个数据和坐标轴的距离往往是固定的,如果非要对齐的话,上方的数据线段必然跟表格内容对不上,而且Excel里面并没有选项可以调整表格框线的粗细,对齐之后线条粗细明显不一样,这个要求难度确实不小。

这不是我想要的对齐

为了解决这个问题,只能求助于另一个软件了,没错那就是Adobe Illustrator。

打开Adobe Illustrator,新建一个空白文档,然后在Excel内复制图表区域直接粘贴到AI里面,然后选取左上方的白色指针工具(直接选择工具),框选底部的坐标轴和刻度值,选中之后就按键盘的上方向键,一点点挪动,直到坐标轴和表格底部的框线重合。

这里可不要选多了

效果而言算是马马虎虎吧

当然如果单纯想用Excel解决,那可以通过调整数据表中Y轴的数值(比如说0点以上的每个值-0.5),这样效果也不错

到这里,整个森林图的制作就完成了。这个过程中也学到了不少东西,如果大家有什么更舒服的方法也可以分享一下~

香槟师兄:你写那么多,我用R也就三行代码……

工具介绍

TissGDB数据库查看各个组织的基因表达情况

2020-6-27 0:20:00

工具介绍

TIMER数据库:肿瘤免疫在线研究工具

2020-6-28 20:19:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索