在绘制森林图之前当然需要先下载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#文本显示
新建文件上述代码会在运行界面显示出数据文本
如图
从第二个红色下面开始哈哈前面忽略忽略
接下来就是导入对应的安装包,对于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)
绘制的图
在右下角哈哈,上面是比较基础的绘图,参考资料发现还可以对所画的图进行优化,不是上面看起来的那么粗糙额
如果将绘图代码改成
> 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)
>
图像的显示会变成
还是右下角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)
运行的界面会变成
主要是对库中函数参数的设置,可以改变的嘛,不过出现错误最多的主要是要保证存在库的同时正确使用函数。