生存分析图表美化

2019中秋节我们的全国巡讲本来应该是去贵州或者兰州,但无奈报名人数太少,临时调到广州。中秋节专场吸引到了几位中山大学临床统计方向博士研究生,其中一位小伙伴把她以前的统计学技能全部R语言化了,会出一系列笔记。

下面是杜云的投稿

做生存分析时,想模仿做这样的图。

也就是想做K-M曲线,带有risk-table,并且把5-year OS (或者HRs) 加在图的空白区域。
下面的例子试试。

准备和检查数据

# package load
library(magrittr) # 用pipeline符号。
library(survival)
library(survminer) # 用来做km曲线。
library(ggsci) # 当作颜色库来选颜色。生信技能树学到的小妙招。
library(dplyr) # @ data_frame()
library(gridExtra) # @ tableGrob()
library(flextable)
# Data preparation and checking
data("colon")
head(colon) %>% flextable() %>% autofit()

id

study

rx

sex

age

obstruct

perfor

adhere

nodes

status

differ

extent

surg

node4

time

etype

1

1

Lev+5FU

1

43

0

0

0

5

1

2

3

0

1

1,521

2

1

1

Lev+5FU

1

43

0

0

0

5

1

2

3

0

1

968

1

2

1

Lev+5FU

1

63

0

0

0

1

0

2

3

0

0

3,087

2

2

1

Lev+5FU

1

63

0

0

0

1

0

2

3

0

0

3,087

1

3

1

Obs

0

71

0

0

1

7

1

2

2

0

1

963

2

3

1

Obs

0

71

0

0

1

7

1

2

2

0

1

542

1

## outcome
summary(colon$time)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8 566 1855 1538 2331 3329
colon$time %>% density %>% plot

table(colon$status)##
## 0 1
## 938 920
## exposure
table(colon$rx)
##
## Obs Lev Lev+5FU
## 630 620 608

第一步:画带risk table的K-M曲线。

p=ggsurvplot(survfit(Surv(time,status==1)~rx,data = colon),
conf.int = T, # 标注95% CI。
surv.scale = "percent",
palette = pal_nejm("default")(3), # 选择ggsci包里边的颜色。
ylab = "Survival proportion",
font.x = c(18),
font.y = c(18),
censor.shape="|",
censor.size = 2,
legend.title = "",
legend.labs=levels(colon$rx), # legend 需要改下,不然多了rx字样。
font.legend = c(12, "plain"), # plot legend font size, color.
risk.table = T, # 显示risk table。
risk.table.title = "No. at risk",
risk.table.fontsize = 3, # table number font size
risk.table.height = 0.3,
surv.plot.height = 0.6,
title = "",
pval = T, # log-rank test得到的p value。
pval.size = 4,
pval.coord = c(2, .1) # p value在图中的位置。
) +
labs(x='') # 去掉km曲线的x 坐标的label,因为与risk table的x label是重复的。
p$table <- p$table +
theme(plot.title = element_text(size = 10))+labs(x='Time since randomization') # 调整risk table的字体大小.ggsurvplot 得到的table与plot均可用ggplot2里边的参数来调整。非常方便。
p

第二步:做5-year OS 表格。

# 得到5-year OS 数据list
a=summary(survfit(Surv(time,status==1) ~ rx, data = colon), times = 5*365)
# 提取我们要的 5-year OS和95% CI,并调整好格式。
mytable=data_frame(Group=a[["strata"]],surve5=a[["surv"]],lower=a[["lower"]],upper=a[["upper"]]) %>% mutate(Group=levels(colon$rx),surve5=paste0(round(100*surve5,2),'%'),lower=paste0(round(lower*100,2),'%'),upper=paste0(round(upper*100,2),'%'),OS_5y=paste0(surve5,' (',lower,'-',upper,')')) %>% .[,c(1,5)]

mytable %>%flextable() %>% autofit()

Group

OS_5y

Obs

48.75% (44.98%-52.84%)

Lev

49.76% (45.95%-53.87%)

Lev+5FU

62.44% (58.68%-66.43%)

第三步:将K-M 曲线和5-year OS表格整到一起。

p$plot=p$plot+annotation_custom(tableGrob(mytable,rows = NULL),xmin=50, xmax=2000, ymin=0.15, ymax=0.5)
p

Done!
尽力了,还是不是很漂亮,图与表的位置和尺寸再根据需要图片大小来微调吧。
5-year OS 表格的背景不会去掉,若有知道的小伙伴,欢迎留言交流。

(0)

相关推荐

  • R数据分析:生存分析的做法与解释续

    今天更新续文,上篇文章写了生存曲线的画法,但是留了一个问题没有解决,就是Kaplan-Meier生存曲线实际上仅仅把病人分为两组做了生存率随时间的比较,但是它并没有考虑协变量.R数据分析:生存分析的做 ...

  • R语言生存分析: 时变竞争风险模型分析淋巴瘤患者

    原文链接:http://tecdat.cn/?p=22422 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率.该模型包含Fine和Gray(1 ...

  • 【文献摘要】前庭神经鞘瘤的恶性转变:临床研究与生存分析

    <Frontiers in Oncology>杂志 2021 年4月14日在线发表四川大学华西医院的Jiuhong Li, Qiguang Wang, Menglan Zhang,等撰写的 ...

  • 生存分析,你真得了解吗? |

    在医学或者公共卫生研究中,慢性疾病的发生.发展.预后一般不适用于治愈率.病死率等指标来考核,因为其无法在短时间内明确判断预后情况,为此,只能对患者进行长期随访,统计一定时期后的生存或死亡情况以判断诊疗 ...

  • Excel图表美化,让你的Excel图表更美观

    在Excel中插入的原始图表,可能并不能满足我们需要的美观,那么可以自己对图表进行美化,下面教大家操作步骤,让你的Excel图表高大上. 美化图表步骤: 1.选中数据,点击插入-推荐的图表-所有图表, ...

  • 应该知道的生存分析参数(收藏贴)

    在做生信分析的时候,尽管各种分析多到让人眼花缭乱,但是最重要的无外乎表达差异和生存参数,其余都是点缀.表达差异是前提,但是光有表达差异还不行.若A基因在肿瘤和正常组织中表达有差异,但是不影响生存参数, ...

  • 对于数据可视化分析图表,你了解多少?

    随着可视化技术的快速发展,数据也在逐渐进步.借助于可视化大屏,数据可视化的数据分析图表,将数据以图表的形式进行分析,缩短了用户对于数据的理解时间,同时对于整体的布局也进行了一些美化. 那么,数据可视化 ...

  • R语言生存分析可视化分析

    完整原文链接:http://tecdat.cn/?p=5438 生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, &qu ...

  • 生存分析,你真得了解吗? | 30天学会医学统计与SPSS公益课(Day24)

    Day 24:生存分析基本概念 隶属第六部分:生存分析 在医学或者公共卫生研究中,慢性疾病的发生.发展.预后一般不适用于治愈率.病死率等指标来考核,因为其无法在短时间内明确判断预后情况,为此,只能对患 ...

  • Excel图表美化技巧 分层圆饼图展示季度销售额占比

    Excel图表美化技巧 分层圆饼图展示季度销售额占比