- STHDA Web
survminer R package: Survival Data Analysis and Visualization
survminer R包:生存数据分析和可视化
生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。[1]
survminer无疑是一款优秀的生存分析包,可以同时绘制生存曲线和风险数字表,操作简单,出图快速且美观。
1. 绘制无分组生存曲线
rm(list = ls())
install.packages("survminer")
# 加载R包
library("survminer")
#绘制无分组生存曲线
require("survival")
head(lung)
inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
1 3 306 2 74 1 1 90 100 1175 NA
2 3 455 2 68 1 0 90 90 1225 15
3 3 1010 1 56 1 0 90 90 NA 15
4 5 210 2 57 1 1 90 60 1150 11
5 1 883 2 60 1 0 100 90 NA 0
6 12 1022 1 74 1 1 50 80 513 0
# 拟合生存曲线
fit1 <- survfit(Surv(time, status) ~ 1, data = lung)
# 绘制生存曲线
ggsurvplot(fit1, color = "#2E9FDF")
- Rplot01.png
2. 绘制两组的生存曲线
# 绘制两组的生存曲线
fit2 <- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit2 )
- Rplot02.png
# 更改字体大小、风格及颜色
ggsurvplot(fit2, title = "Survival curve",
font.main = 18, #标题字体大小
font.x = 16, #x坐标字体大小
font.y = 16, #y坐标字体大小
font.tickslab = 14) #轴须字体
# 同时更改字体大小、风格及颜色
ggsurvplot(fit2, title = "Survival curve",
font.main = c(16, "bold", "darkblue"),
font.x = c(14, "bold.italic", "red"),
font.y = c(14, "bold.italic", "darkred"),
font.tickslab = c(12, "plain", "darkgreen"))
- Rplot04.png
# 更改图例位置、标题及标签
ggsurvplot(fit2, legend = "bottom",
legend.title = "Sex",
legend.labs = c("Male", "Female"))
# 坐标上指定图例位置
ggsurvplot(fit2, legend = c(0.2, 0.2))
- Rplot05.png
- Rplot06.png
# 更改线类型和色板
ggsurvplot(fit2, size = 1, # change line size
linetype = "strata", # change line type by groups
break.time.by = 250, # break time axis by 250
palette = c("#E7B800", "#2E9FDF"), # custom color palette
conf.int = TRUE, # Add confidence interval
pval = TRUE # Add p-value
)
还有两种配色风格 palette = "Dark2" 、palette = "grey"
- Rplot07.png
- Rplot08.png
# 在风险表中添加数字
ggsurvplot(fit2, pval = TRUE, conf.int = TRUE,
risk.table = TRUE, risk.table.y.text.col = TRUE)
# 自定义输出
res <- ggsurvplot(fit2, pval = TRUE, conf.int = TRUE,
risk.table = TRUE)
res$table <- res$table + theme(axis.line = element_blank())
res$plot <- res$plot + labs(title = "Survival Curves")
print(res)
- Rplot09.png
- Rplot10.png
ggsurvplot(fit2,
pval = TRUE, conf.int = TRUE,
risk.table = TRUE, # Add risk table
risk.table.col = "strata", # Change risk table color by groups
linetype = "strata", # Change line type by groups
ggtheme = theme_bw(), # Change ggplot2 theme
palette = c("#E7B800", "#2E9FDF")
)
- Rplot11.png
# 更改x轴范围
xlim = c(0, 600)
# 转换生存曲线:绘制累积事件和危害函数图
ggsurvplot(fit2, conf.int = TRUE,
palette = c("#FF9E29", "#86AA00"),
risk.table = TRUE, risk.table.col = "strata",
fun = "event") #转换生存曲线
# 绘制累积危害函数
fun = "cumhaz"
# 任意函数
fun = function(y) y*100
- Rplot12.png
2. 绘制多组的生存曲线
# 多组生存曲线
head(colon)
id study rx sex age obstruct perfor adhere nodes status differ extent surg node4 time etype
1 1 1 Lev+5FU 1 43 0 0 0 5 1 2 3 0 1 1521 2
2 1 1 Lev+5FU 1 43 0 0 0 5 1 2 3 0 1 968 1
3 2 1 Lev+5FU 1 63 0 0 0 1 0 2 3 0 0 3087 2
4 2 1 Lev+5FU 1 63 0 0 0 1 0 2 3 0 0 3087 1
5 3 1 Obs 0 71 0 0 1 7 1 2 2 0 1 963 2
6 3 1 Obs 0 71 0 0 1 7 1 2 2 0 1 542 1
fit3 <- survfit( Surv(time, status) ~ rx + adhere,
data = colon )
ggsurvplot(fit3, pval = TRUE,
break.time.by = 800,
risk.table = TRUE,
risk.table.height = 0.5) # 指定风险表高度(当组分多时非常有用)
- Rplot13.png
# 更改图例标签
ggsurvplot(fit3, pval = TRUE,
break.time.by = 800,
risk.table = TRUE,
risk.table.col = "strata",
risk.table.height = 0.5,
ggtheme = theme_bw(),
legend.labs = c("A", "B", "C", "D", "E", "F"))
- Rplot14.png
网友评论