本文首发于“生信补给站”微信公众号,https://mp.weixin.qq.com/s/2W1W-8JKTM4S4nml3VF51w

更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号,给您干货。

上一篇简单的介绍了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 Rate\n PCI","\n",data$PCI.Group),
                  c("4-Yr Cum. Event Rate\n 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)

如此即绘制完成了,颜色,大小,间隔等需要根据实际情况进行调整。

参考链接:https://www.r-bloggers.com/forest-plot-with-horizontal-bands/

更多:

R|生存分析(1):生存分析介绍以及绘制KM曲线

Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化

Forest plot(森林图) | Cox生存分析可视化

maftools|TCGA肿瘤突变数据的汇总,分析和可视化

maftools | 从头开始绘制发表级oncoplot(瀑布图)

ggalluvial|炫酷桑基图(Sankey),你也可以秀

ggplot2|详解八大基本绘图要素

ggplot2|ggpubr进行“paper”组图合并

pheatmap|暴雨暂歇,“热图”来袭!!!

ggplot2-plotly|让你的火山图“活”过来

ggplot2| 绘制KEGG气泡图

ggplot2|绘制GO富集柱形图

绘图系列|R-corrplot相关图

绘图系列|R-VennDiagram包绘制韦恩图

R|clusterProfiler-富集分析

【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】

R-forestplot包| HR结果绘制森林图的更多相关文章

  1. R语言绘制花瓣图flower plot

    R语言中有很多现成的R包,可以绘制venn图,但是最多支持5组,当组别数大于5时,venn图即使能够画出来,看上去也非常复杂,不够直观: 在实际的数据分析中,组别大于5的情况还是经常遇到的,这是就可以 ...

  2. Forest plot(森林图) | Cox生存分析可视化

    本文首发于“生信补给站”微信公众号,https://mp.weixin.qq.com/s/2W1W-8JKTM4S4nml3VF51w 更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号 ...

  3. R语言与医学统计图形-【33】生存曲线、森林图、曼哈顿图

    1.生存曲线 基础包survival+扩展包survminer. survival包内置肺癌数据集lung. library(survival) library(survminer) str(lung ...

  4. 用R包中heatmap画热图

    一:导入R包及需要画热图的数据 library(pheatmap) data<- read.table("F:/R练习/R测试数据/heatmapdata.txt",head ...

  5. R绘图 第六篇:绘制线图(ggplot2)

    线图是由折线构成的图形,线图是把散点从左向右用直线连接起来而构成的图形,在以时间序列为x轴的线图中,可以看到数据增长的趋势. geom_line(mapping = NULL, data = NULL ...

  6. R绘制韦恩图 | Venn图

    解决方案有好几种: 网页版,无脑绘图,就是麻烦,没有写代码方便 极简版,gplots::venn 文艺版,venneuler,不好安装rJava,参见Y叔 酷炫版,VennDiagram 特别注意: ...

  7. R语言之Random Forest随机森林

    什么是随机森林? 随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法.随机森林的名称中有 ...

  8. r语言 包说明

    [在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程.具体如下]   [下面列出每个步骤最有用的一些R包] 1.数据导入以下R包主要用于数据导入和保存数据:feather:一种快速,轻 ...

  9. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

随机推荐

  1. Taro框架下qq小程序开发体验

    qq小程序发布了,作为第一批体验者 .还是发现了和微信小程序很多不同的地方. 最新的小程序我这里都是用Taro开发的,体验较为不错.数据管理用的是redux.JS用的ES6加async等. 微信小程序 ...

  2. springBoot异常统一处理

    springBoot异常统一处理 采用@ControllerAdvice注解和@ExceptionHandler注解,可以对异常进行统一处理. 1.结构图: 2.pom.xml文件: <?xml ...

  3. Qt之键盘事件监听-实时响应大小写Capslock按键

    目录 一.开篇 二.效果展示 三.实现思路 1.重写QLlinEdit 2.全局应用程序事件 3.windows钩子 四.相关文章 原文链接:Qt之键盘事件监听-实时响应大小写Capslock按键 一 ...

  4. 【原创】我们还需要学jQuery吗?

    引言 最近撸Vue的项目,感觉的有点心累.恰巧近日,有读者来信,就是想咨询一下 烟哥,现在还有必要学习jQuery么? 我明白,现在MVVM框架逐渐占据了主要市场,很多老项目也逐渐的从jQuery转向 ...

  5. b161: NOIP2007 4.Hanoi双塔问题

    zerojudge  汉诺塔?图片问度娘 b161: NOIP2007 4.Hanoi双塔问题 题目: 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都 ...

  6. 利用maven命令将外部jar包导进maven仓库

    命令如下:mvn install:install-file -DgroupId=com.zebra -DartifactId=ZSDK_API -Dversion=v2.12.3782 -Dpacka ...

  7. Spring Boot 入门之整合 log4jdbc 篇(六)

    博客地址:http://www.moonxy.com 一.前言 Spring Data JPA 默认采用 Hibernate 实现.Hibernate 的 showSql 配置只打印 SQL,但并不打 ...

  8. Java开发者薪资最低?程序员只能干到30岁?国外真的没有996?Intellij真的比Eclipse受欢迎?

    Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告.近日,Stack Overflow公布了其第9次年度开发者调查报告(https://insights. ...

  9. 了解一下Java SPI的原理

    了解一下Java SPI的原理 1 为什么写这篇文章? 近期,本人在学习dubbo相关的知识,但是在dubbo官网中有提到Java的 SPI,这个名词之前未接触过,所以就去看了看,感觉还是有很多地方有 ...

  10. 使用python asyncio+aiohttp做接口测试(TODO)

    线程是操作系统层面的“并行”, 协程是应用程序层面的“并行”. 协程本质上就是:提供一个环境,保存一些需要等待的任务,当这些任务可以执行(等待结束)的时候,能够执行.再等待的过程中,程序可以执行别的任 ...