IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> R语言绘制森林图 -> 正文阅读

[Python知识库]R语言绘制森林图

在绘制森林图之前当然需要先下载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)

运行的界面会变成

?

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

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:04:55  更:2022-12-25 11:06:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 22:26:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码