R语言绘制森林图

news2024/9/23 17:25:41

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

运行的界面会变成

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux修炼手册:基本指令(完结)】

Life is about waiting for the right moment to act. 目录 1 zip/unzip指令 2 tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 3 bc指令 4 uname –r指令 5 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 6 shutdown 7…

智能语音之远场关键词识别实践(二)

上篇&#xff08;智能语音之远场关键词识别实践&#xff08;一&#xff09;&#xff09;讲了“远场关键词识别”项目中后端上的实践。本篇将讲在前端上的一些实践以及将前端和后端连起来形成一个完整的方案。下图是其框图&#xff1a;&#xff08;麦克风阵列为圆阵且有四个麦克…

SpringMVC【学习笔记】

SpringMVC是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web 框架&#xff0c;即使用了MVC架构模式的思想&#xff0c;将web 层进行职责解耦&#xff0c;基于请求驱动指的就是使用请求-响应模型&#xff0c;框架的目的就是帮助我们简化…

看2022年卡塔尔世界杯有感

一、我印象中第一次看世界杯是2010年南非世界杯 自己第一次踢球是什么时候已经记不清了&#xff0c;大概是小学时候。因为我印象中第一次看世界杯是2010年南非世界杯&#xff0c;因为世界杯主题曲也比较好听&#xff0c;当然&#xff0c;我认为1998年法国世界杯的主题曲最为经…

Python中的魔法方法

python中的魔法方法是一些可以让你对类添加“魔法”的特殊方法,它们经常是两个下划线包围来命名的 Python的魔法方法&#xff0c;也称为dunder(双下划线)方法。大多数的时候&#xff0c;我们将它们用于简单的事情&#xff0c;例如构造函数(init)、字符串表示(str&#xff0c; r…

计算机毕设Python+Vue兴发农家乐服务管理系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux | 套接字(socket)编程 | UDP协议讲解

文章目录TCP与UDP的区别网络字节序套接字接口介绍sockaddr结构服务端UDP套接字设置客户端UDP套接字设置TCP与UDP的区别 TCPUDP传输层协议传输层协议有连接无连接可靠连接不可靠连接面向字节流面向数据报 首先&#xff0c;网络通信模型是分层的&#xff0c;模型的每一层都有属于…

深入jvm字节码

深入jvm字节码1.深入剖析class文件结构1.1初探class文件1.2 class文件结构解析1.2.1 魔数1.2.2 版本号1.2.3 常量池1.2.4 Access flags1.2.5 this_class,super_name,interfaces1.2.6 字段表1.2.7 方法表1.2.8 属性表1.3使用javap查看类文件2.字节码基础2.1字节码概述2.2java虚拟…

一文看懂---B树及其简单实现

目录 1.B树的引入 2.B树的概念 3.B树是如何插入的&#xff1f; 4.具体的代码实现 1.B树的引入 在以往我们在内存中搜索数据时&#xff0c;可以使用红黑树&#xff0c;平衡树&#xff0c;哈希表等数据结构&#xff0c;但是当数据量比较大&#xff0c;不能一次放进内存&…

[附源码]计算机毕业设计Python仓储综合管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

C++PrimerPlus 第七章 函数-C++的编程模块-7.9 递归

目录 7.9 递归 7.9.1 包含一个递归调用的递归 7.9.2 包含多个递归调用的递归 7.9 递归 下面介绍一些完全不同的内容。C函数有一种有趣的特点——可以调用自己&#xff08;然而&#xff0c;与C语言不同的是&#xff0c;C不允许main()调用自己&#xff09;&#xff0c;这种功能…

SpringCloud Gateway简单使用

前言 SpringCloud Gateway是一个网关框架&#xff0c;也是现在流行的的一个网关框架&#xff0c;它包括了过滤器、限流、权限、基本路由、整合Eureka 断言predicates 等功能&#xff0c;也会介绍和zuul这个框架的一个对比&#xff0c; Spring Cloud 生态系统中的网关&#xff…

243. 一个简单的整数问题2——差分+树状数组

给定一个长度为 N 的数列 A&#xff0c;以及 M 条指令&#xff0c;每条指令可能是以下两种之一&#xff1a; C l r d&#xff0c;表示把 A[l],A[l1],…,A[r] 都加上 d。 Q l r&#xff0c;表示询问数列中第 l∼r 个数的和。 对于每个询问&#xff0c;输出一个整数表示答案。 …

《爱与自由》豆瓣9.3优秀父母的必读书

《爰和自由》 关于作者 孙瑞雪&#xff0c;中国著名的幼儿教育家与心理学专家&#xff0c;"爱和自由、规则和平等”教育精神的 发起者和倡导者&#xff0c;中国系统引进实施国际蒙特梭利教育第一人&#xff0c;成功实践了科学教育法的本土化。她发展和延伸了蒙特梭利敏感…

Oh My Posh美化CMD、Anaconda Prompt解决方案

网上搜到的Oh My Posh安装配置都是针对power shell的&#xff08;我参考这篇成功配置了针对power shell的字体和主题&#xff09;。期间遇到了无法加载文件WindowsPowerShell\profile.ps1的问题&#xff0c;参考这篇解决。由于平时我用Anaconda比较多&#xff0c;而anaconda是基…

基于ARMR和白噪声特性模型及风速威布尔分布研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

PRISEMI芯导产品推荐 | 支持路径管理功能的3A单节锂离子电池充电IC——PSC2965

PRISEMI芯导产品推荐 | 支持路径管理功能的3A单节锂离子电池充电IC——PSC2965 随着便携式电子设备功能越来越多样化和整机性能的不断提升&#xff0c;整机功耗也在面临越来越大的挑战。最直接有效的方式就是提高电池的容量来提高整机的使用时长。为了不降低用户体验&#xff0…

C# 绘图基础

一 GDI技术简介 ① GDI&#xff1a;Graphics Device Interface. ② GDI&#xff1a;GDI的改进&#xff1b; ③ 是.NET框架结构的重要组成部分&#xff1b; ④ 和GDI一样它提供对二维图形图像的支持&#xff1b; 二 .NET 对GDI的封装 三 坐标系统 GDI的坐标系统&#xff1b; …

计算机毕业设计——简单的网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

基于粒子群优化算法的分布式电源优化调度实现配电网稳定运行(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…