查看原文
其他

R语言统计与绘图:绘制不同坐标轴置信区间的森林图

段小麻 R语言统计与绘图 2023-01-01

前面我们学习了使用forestplot包绘制简单森林图、多个置信区间的森林图绘制。

R语言统计与绘图:forestplot包绘制森林图
R语言统计与绘图:绘制多个置信区间的森林图

今天继续来学习下复杂点的森林图绘制,如下图所示,相同变量,不同置信区间,不同坐标轴。

今天来学习在R中怎么绘制上面这种森林图。


目  录

  • 1. 安装和加载R包

  • 2. 读取数据

  • 3. 数据处理

    • 3.1 定义亚组

    • 3.2 转换数据格式

  • 4. 绘制森林图

  • 5. 使用PS合并森林图

    • 5.1 用PS打开PDF

    • 5.2 创建新文档

    • 5.3 复制图形到新文档上

    • 5.4 删除文字内容

    • 5.5 调整图形位置

    • 5.6 保存图形

  • 6. 使用AI合并森林图

    • 6.1 用AI打开PDF

    • 6.2 移动图形到一张画板上

    • 6.3 删除文字内容

    • 6.4 调整图形位置

    • 6.5 保存图形


1. 安装和加载R包

forestplot包是基于rmeta包的forestplot函数创建的,但是功能更强大,可以对同一标签添加多个置信区间。

install.packages("forestplot")  #安装forestplot包 
library(forestplot)  # 加载包 

2. 读取数据

以前面推文的数据为例,将数据录入到Excel中,录入数据格式如下图所示:

library(readxl) # 使用RStudio软件的导入数据功能 
forest <- read_excel("forest.xlsx"
View(forest) # 预览数据 
展示部分数据

3. 数据处理

3.1 定义亚组

在论文图片中,为了区分以及显示的更清楚,亚组一般会向前缩进两个空格。

subgps <- c(3,4,7,8,11,12,15,16,19,20,23,24,25,26
# 指定要缩进的亚组,此处向量中的数字表示亚组的行数
forest$Variable[subgps] <- paste("    ",forest$Variable[subgps])  
# 亚组前添加两空格
View(forest) # 预览数据看看有没有添加空格

3.2 转换数据格式

attach(forest)  # 绑定数据框  
labeltext <- as.matrix(forest[,1]) 
# 将forest数据框的第1列转换为矩阵
# 以矩阵形式将文本数据导入函数

4. 绘制森林图

今天要绘制的森林图为相同变量,不同置信区间,每个置信区间的坐标轴还不一样。在forest包没找到一次性出图的办法,可以考虑先分别绘制每张森林图,导出PDF后再在AI或PS软件中进行合并。

根据示例数据所示,我们要先分别绘制三张森林图,导出PDF格式图形。

# 设置导出图形为PDF格式,命名为forestplot1。
pdf("forestplot1.pdf", width = 8, height = 6.0)
# 绘制图形
forestplot(labeltext,  # 图形文本部分 
           mean = HR,  # 图形 HR 部分 
           lower = Lower, # 95%CI下限           
           upper = Upper, # 95%CI上限
           zero = 1.0# 设置无效线的横坐标
           xlab = "<favor usual care-  -favor alert>"# 设置x轴标题 
           xticks = c(0.5,1.0,1.5,2.0,2.5),  # 设置x轴刻度ticks
           boxsize = 0.3# 设置Box的大小,保持大小一样
           graphwidth = unit(0.25"npc"),
           ci.vertices = TRUE,  # 森林图置信区间两端添加小竖线,默认FALSE
           ci.vertices.height = 0.2# 设置森林图置信区间两端小竖线的高度,默认0.1
           align = "l",  # 文字对齐方式,"l"、"r"和"c"分别为左对齐,右对齐和居中对齐
           txt_gp = fpTxtGp(label = gpar(cex = 1.0), # 设置文本字体大小
                            ticks = gpar(cex = 1.0), # 设置坐标轴刻度大小
                            xlab = gpar(cex = 1.0))) # 设置坐标轴标题大小
dev.off()
forestplot1

如上图所示,我们根据代码已经绘制了第一张森林图,后面两张森林图也根据上述代码绘制,不过需要修改部分参数。修改参数如下:

# 第二张森林图
pdf("forestplot2.pdf", width = 8, height = 6.0)
mean = HR1  
lower = Lower1            
upper = Upper1 

# 第三张森林图
pdf("forestplot3.pdf", width = 8, height = 6.0)
mean = HR2 
lower = Lower2           
upper = Upper2

# 其他参数根据需要酌情修改。

<<< 左右滑动见更多 >>>

5. 使用PS合并森林图

5.1 用PS打开PDF

将3张PDF格式图形分别用PS打开,在打开时选择分辨率,一般设置为600分辨率。

5.2 创建新文档

在创建新文档之前查看每一张PDF森林图的宽度和高度。点击PS软件菜单栏的图象-图象大小查看。

森林图的宽度为12.65厘米,高度为14.24厘米,我们要横着合并图形,3张图则37厘米多。

5.3 复制图形到新文档上

创建好新文档后,界面分别移动到三张图上,使用快捷键Ctrl+A全选,Ctrl+C复制,在新文档上使用Ctrl+V粘贴图形。

如上所示,将三张图形移动到了新文档中,通过移动工具调整图形的摆放顺序。

5.4 删除文字内容

选中不同的图层,使用矩形选框工具,分别选中第2张、第3张森林图的文字部分,使用delete键删除文字内容。

5.5 调整图形位置

删除文字内容后,分别选中第2张、第3张森林图,配合shift键调整两张图形的位置。

5.6 保存图形

如上图所示,图形合并好了,先通过裁剪工具裁剪不必要的部分,还可以通过图象-图象大小调整输出图象的大小。

通过文件-存储为-选择TIFF格式保存图形。

选择图象压缩类型为LZW,图层压缩选择扔掉图层并存储拷贝,点击确定输出图形。

输出图形

6. 使用AI合并森林图

6.1 用AI打开PDF

将3张PDF格式图形分别用AI打开,如下图所示:

6.2 移动图形到一张画板上

在第1张图形上,用鼠标选中所有的图形元素,使用快捷键Ctrl+G将所有图形元素编组。第2张、第3张图形同样操作。

使用快捷键ctrl+C复制第二张、第三张图,ctrl+V粘贴这两张图形到第1张图形上。

6.3 删除文字内容

使用画板工具调整画板大小,使用Ctrl+Shift+G快捷键取消第2张、第3张的图形编组,然后鼠标选中第2张、第3张图形的文字部分,然后使用Delete删除掉。

6.4 调整图形位置

删除掉文字部分后,使用鼠标分别选中第二张、第三张的图形部分,然后使用快捷键Ctrl+G将图形部分编组,调整移动这两张图形的位置。

6.5 保存图形

如上图所示,使用画板工具调整画板的大小。

调整好大小以后,通过文件-存储为-选择EPS格式保存为EPS格式图形。

还可以选择文件-导出-导出为-选择TIFF格式保存为TIFF格式,在导出时可以选择图形的分辨率。

至此,使用PS和AI合并森林图已经完成了。


相关文章

R语言统计与绘图:方差分析 2020-06-01
Excel数据导入R前的注意事项 2020-05-30
R语言统计与绘图:pROC包绘制ROC曲线 2020-05-25
R语言统计与绘图:ggsurvplot()函数绘制Kaplan-Meier生存曲线 2020-05-21
R语言统计与绘图:Kaplan-Meier生存曲线进阶 2020-05-21


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存