R-forestplot包| HR結果繪製森林圖

  • 2019 年 10 月 14 日
  • 筆記

本文首發於“生信補給站”微信公眾號,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 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)

 

如此即繪製完成了,顏色,大小,間隔等需要根據實際情況進行調整。

 

參考鏈接: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-富集分析

 

【覺得不錯,右下角點個“在看”,期待您的轉發,謝謝!】