R语言绘制森林图

时间:2022-12-19 09:59:14

在绘制森林图之前当然需要先下载RStudio软件啦,在下载后需要安装对应的rtool,最后将两者关联起来才能使用其中对应的包,否则只安装了软件很多功能不能使用而且还会报错,这篇文章主要是总结怎么使用forestploter包绘制森林图,本来是想使用python绘制的,但是网络上关于python绘制森林图可参考的文章寥寥无几,所以这次使用R语言进行绘制森林图,而且更加简单,关于森林图的介绍在上篇文章中已经整理了一些资料。

简单的将绘制森林图的步骤描述下

(1)新建变量导入数据集

(2)导入安装包

(3)使用对应的函数对其中的数据显示各层次进行配置,最后显示

目前使用的方法是将数据按照矩阵的形式,先将每行的变量和每列的数据手动添加进程序,也可以使用xsxl表格的方式导入,这个目前还没有探索,先会这个简单的hh,

eg,以下的数据

        study      steroid placebo  mean lower  upper         HR (95% CI)                
1     Auckland      36     60  0.578  0.372  0.898          0.58 (0.37 to 0.90)                
2        Block       1       5     0.165   0.018 1.517           0.16 (0.02 to 1.52)                
3        Doran       4      11   0.246   0.072 0.833           0.25 (0.07 to 0.83)                
4        Gamsu      14    20  0.700   0.333 1.474            0.70 (0.33 to 1.47)                
5     Morrison       3     7     0.348   0.083 1.455            0.35 (0.08 to 1.46)                
6 Papageorgiou   1     7    0.139    0.016 1.209           0.14 (0.02 to 1.21)                
7      Tauesch       8    10  1.017     0.365 2.831          1.02 (0.36 to 2.83)

8      Summary                    0.531   0.386 0.731        0.53 (0.39 to 0.73)                
 

代码文本导入

           

 tabletext <- data.frame(
+     # 文本数据
+     study =  c("Auckland", "Block", "Doran", "Gamsu", "Morrison", "Papageorgiou", "Tauesch", "Summary"),
+     steroid =  c("36", "1", "4", "14", "3", "1", "8", ""),
+     placebo = c("60", "5", "11", "20", "7", "7", "10", ""),
+     # 画“森林需要的数据”,没有的用空格表示,进行按列赋值操作
+     mean  = c(0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, 0.531), 
+     lower = c(0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, 0.386),
+     upper = c(0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, 0.731)
+ )
> 
> # 增加一列
> tabletext$`HR (95% CI)` <- ifelse(is.na(tabletext$mean), "",
+                                   sprintf("%.2f (%.2f to %.2f)",
+                                           tabletext$mean, tabletext$lower, tabletext$upper))
> 
> # 增加一列空值用于画“森林”
> tabletext$` ` <- paste(rep(" ", 8), collapse = " ")
> 
> tabletext#文本显示

新建文件上述代码会在运行界面显示出数据文本

如图

R语言绘制森林图

 从第二个红色下面开始哈哈前面忽略忽略

接下来就是导入对应的安装包,对于RStudio来说有些安装包是没有的,如果已经下载rtool,则只需要在运行界面插入以下代码既可以安装对应的安装包

install.packages("要使用的安装包")

如果出错的话要检查是否安装rtool

如果安装包没有问题的话就导入即可,画森林图中使用的主要是forestplot包,所以只用导入这个即可

library(forestploter)

导入完成后接下来就是使用对应的函数对参数进行设置

> library(forestploter)
> p <- forest(data = tabletext[,c(1:3,8,7)], #导入数据
+             # 选择文字部分,这里选了5列,
+             # 其中4列是要呈现的文字信息,还有1列空值用于画“森林”
+             
+             lower = tabletext$lower, # 可信区间下限
+             upper = tabletext$upper, # 可信区间上限
+             est = tabletext$mean, # 估计值
+             ci_column = 4 # “森林”出现在图的第几列
+ )
> 
> print(p)
 

绘制的图R语言绘制森林图

 在右下角哈哈,上面是比较基础的绘图,参考资料发现还可以对所画的图进行优化,不是上面看起来的那么粗糙额

如果将绘图代码改成

> p <- forest(data = tabletext[,c(1:3,8,7)],
+             lower = tabletext$lower,
+             upper = tabletext$upper,
+             est = tabletext$mean,
+             ci_column = 4,
+             sizes = tabletext$mean, # 控制方框的大小
+             
+             is_summary = c(rep(FALSE,nrow(tabletext)-1), TRUE), # 最后一列是汇总行
+             ref_line = 1, # 把竖线放到1的位置
+             xlim = c(0,3), # x轴范围
+             ticks_at = c(0,1,2,3), # x轴刻度显示
+             arrow_lab = c("this better","that better"), # x轴下面的文字
+             footnote = "A simple example of forestploter" # 左下角脚注
+ )
> 
> print(p)
> 

图像的显示会变成R语言绘制森林图

 还是右下角hh。

发现竟然还可以设置主题,我天,太全面了!!!

如果将数据传送的代码改成

# 自定义主题,修改各种细节
tm <- forest_theme(base_size = 10, # 基础大小
                   
                   # 可信区间点的形状,线型、颜色、宽度
                   ci_pch = 16,
                   ci_col = "#4575b4", # #762a83
                   ci_lty = 1,
                   ci_lwd = 1.5,
                   ci_Theight = 0.2, # 可信区间两端加短竖线
                   
                   # 参考线宽度、形状、颜色
                   refline_lwd = 1,
                   refline_lty = "dashed",
                   refline_col = "grey20",
                   
                   # 汇总菱形的填充色和边框色
                   summary_fill = "#4575b4",
                   summary_col = "#4575b4",
                   
                   # 脚注大小、字体、颜色
                   footnote_cex = 0.6,
                   footnote_fontface = "italic",
                   footnote_col = "blue")
#将上面的主题设置传递给参数
p1 <- forest(data = tabletext[,c(1:3,8,7)],
            lower = tabletext$lower,
            upper = tabletext$upper,
            est = tabletext$mean,
            ci_column = 4,
            
            is_summary = c(rep(FALSE,nrow(tabletext)-1), TRUE), # 最后一列是汇总行
            ref_line = 1, # 把竖线放到1的位置
            xlim = c(0,3), # x轴范围
            ticks_at = c(0,1,2,3), # x轴刻度显示
            arrow_lab = c("this better","that better"), # x轴下面的文字
            footnote = "A simple example of forestploter", # 左下角脚注
            
            theme = tm
            )

print(p1)

运行的界面会变成

 R语言绘制森林图

主要是对库中函数参数的设置,可以改变的嘛,不过出现错误最多的主要是要保证存在库的同时正确使用函数。