R-forestplot包| HR结果绘制森林图
时间:2022-07-22
本文章向大家介绍R-forestplot包| HR结果绘制森林图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上一篇简单的介绍了COX生存分析结果绘制森林图Forest plot(森林图) | Cox生存分析可视化,本文将介绍根据数据集合的基本信息以及点估计值(置信区间区间)的结果直接绘制森林图的方法。
其中点估计值(置信区间)的结果可以是COX也可以是logistic回归等其他方法的结果,适用范围更广。
数据准备
#载入R包
library(forestplot)
#数据来源:https://www.r-bloggers.com/forest-plot-with-horizontal-bands/
data <- read.csv("ForestPlotData.csv", stringsAsFactors=FALSE)
#查看数据
head(data)
绘制森林图
2.1 简单森林图
对数据进行部分修改,方便行名和列名字输出
## 构建tabletext,更改列名称,展示更多信息
np <- ifelse(!is.na(data$Count), paste(data$Count," (",data$Percent,")",sep=""), NA)
## The rest of the columns in the table.
tabletext <- cbind(c("Subgroup","n",data$Variable),
c("No. of Patients (%)","n",np),
c("4-Yr Cum. Event Raten PCI","n",data$PCI.Group),
c("4-Yr Cum. Event Raten Medical Therapy","n",data$Medical.Therapy.Group),
c("P Value","n",data$P.Value))
##绘制森林图
forestplot(labeltext=tabletext, graph.pos=3,
mean=c(NA,NA,data$Point.Estimate),
lower=c(NA,NA,data$Low), upper=c(NA,NA,data$High),
boxsize=0.5)
如上图所示基本信息OK了,但是可以在以下几个方面进行优化:
- 添加线条,区分Subgroup
- 更改箱线图的宽度,颜色和大小
- 更改字体大小,更易区分
- 添加标题和横坐标轴标示
2.2 优化森林图
## 定义亚组,方便后面线条区分
subgps <- c(4,5,8,9,12,13,16,17,20,21,24,25,28,29,32,33)
data$Variable[subgps] <- paste(" ",data$Variable[subgps])
forestplot(labeltext=tabletext,
graph.pos=3, #为Pvalue箱线图所在的位置
mean=c(NA,NA,data$Point.Estimate),
lower=c(NA,NA,data$Low), upper=c(NA,NA,data$High),
#定义标题
title="Hazard Ratio Plot",
##定义x轴
xlab=" <---PCI Better--- ---Medical Therapy Better--->",
##根据亚组的位置,设置线型,宽度造成“区块感”
hrzl_lines=list("3" = gpar(lwd=1, col="#99999922"),
"7" = gpar(lwd=60, lineend="butt", columns=c(2:6), col="#99999922"),
"15" = gpar(lwd=60, lineend="butt", columns=c(2:6), col="#99999922"),
"23" = gpar(lwd=60, lineend="butt", columns=c(2:6), col="#99999922"),
"31" = gpar(lwd=60, lineend="butt", columns=c(2:6), col="#99999922")),
#fpTxtGp函数中的cex参数设置各个组件的大小
txt_gp=fpTxtGp(label=gpar(cex=1.25),
ticks=gpar(cex=1.1),
xlab=gpar(cex = 1.2),
title=gpar(cex = 1.2)),
##fpColors函数设置颜色
col=fpColors(box="#1c61b6", lines="#1c61b6", zero = "gray50"),
#箱线图中基准线的位置
zero=1,
cex=0.9, lineheight = "auto",
colgap=unit(8,"mm"),
#箱子大小,线的宽度
lwd.ci=2, boxsize=0.5,
#箱线图两端添加小竖线,高度
ci.vertices=TRUE, ci.vertices.height = 0.4)
如此即绘制完成了,颜色,大小,间隔等需要根据实际情况进行调整。
- 【8】数据浏览表格的快速输出
- Silverlight的自定义tooltip提示工具条
- WritableBitmapEx 一瞥
- 2.认证小程序
- 【9】分页浏览的管理
- 温故而知新:silverlight中的图片资源绑定
- 页面状态保持机制(编辑中)
- mysql主从同步(5)-同步延迟状态考量(seconds_behind_master和pt-heartbea)
- ngx_pagespeed-nginx前端优化模块介绍
- Tomcat利用MSM实现Session共享方案解说
- Tomcat集群环境下session共享方案梳理(1)-通过memcached(MSM)方法实现
- nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
- python常用知识梳理
- 如何打击“假货、高仿”类小程序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- NBA投篮数据可视化,4行代码就能实现!
- Laravel框架实现文件上传的方法分析
- PHP集成环境XAMPP的安装与配置
- Laravel解决nesting level错误和隐藏index.php的问题
- PHP反射原理与用法深入分析
- Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
- laravel Validator ajax返回错误信息的方法
- Linux下 php7安装redis的办法
- php实现的数组转xml案例分析
- Laravel框架Auth用户认证操作实例分析
- yii2实现Ueditor百度编辑器的示例代码
- PHP下载文件函数与用法示例
- php实现银联商务公众号+服务窗支付的示例代码
- php使用json-schema模块实现json校验示例
- 17个品牌,113款5G手机,5G离我们越来越近。