![]([https://files.mdnice.com/user/47194/8d13c60d-023e-44fb-8d96-26da2fcf53c3.gif](https://files.mdnice.com/user/47194/8d13c60d-023e-44fb-8d96-26da2fcf53c3.gif))
背景
网上搜到过代码,但是都是用TCGA自己带的肺癌数据画的,往往我们手里的不是同样的格式的数据,本期推文带来的是自定义数据绘制。
![]([https://files.mdnice.com/user/47194/2604d117-7783-44a6-be59-a9bd4f8e5bf0.gif](https://files.mdnice.com/user/47194/2604d117-7783-44a6-be59-a9bd4f8e5bf0.gif))
使用场景
展示分类样本的生存曲线
场景一:患者的生存期跟基因变异的关系
场景二:药物处理导致模式动物生存期变化
载入自定义数据
rm(list = ls()) #### 魔幻操作,一键清空~
getwd()
setwd('D:/rtmp/survivalcurve/')
svData<-read.delim(file="20230829.txt",header=T,as.is=T)
head(svData) #### 查看 前六行
tail(svData) #### 查看 后六行
文件前六行:
Months PD.L1.protein.high.expression PD.L1.protein.low.expression
1 1 NA 1
2 1 1 NA
3 1 NA 1
4 1 NA 1
5 4 NA 1
6 6 NA 1
文件后六行:
Months PD.L1.protein.high.expression PD.L1.protein.low.expression
82 128 NA 0
83 132 NA 0
84 132 NA 0
85 132 NA 0
86 139 0 NA
87 140 NA 0
输入数据的预处理
画图用的数据结构是一个包含样本分类、生存期和随访情况的数据框。
自定义数据的生存期是Months列,样本分类和随访情况融合在第2和3列中,
1代表death,0代表alive,NA和1/0代表样本分类,因此,样本分类和随访情况需要重新生成。
svData$Expression<-NA
svData$Expression[!is.na(svData$PD.L1.protein.high.expression)]<-"high"
svData$Expression[is.na(svData$PD.L1.protein.high.expression)]<-"low"
svData$Status<-1+(!is.na(svData$PD.L1.protein.high.expression|svData$PD.L1.protein.low.expression))
head(svData[,c(1,4,5)]) #查看预处理后的结果
write.table(svData[,c(1,4,5)],file="norm.txt",sep = "\t",col.names = T,row.names = F,quote = F)
预处理后结果:
Months Expression Status
1 1 low 2
2 1 high 2
3 1 low 2
4 1 low 2
5 4 low 2
6 6 low 2
可以看到重新生成后,svData中生存期、样本分类和追踪情况分别是Months、Expression、Status列。
多说一句,随访信息遵循的规则是,The status indicator, normally 0=alive, 1=dead.
Other choices are TRUE/FALSE (TRUE = death) or 1/2 (2=death)
如果我们手里的输入文件格式跟以上保存的norm.txt相符,就跳过预处理的这一步。
开始画图
常见调整参数有颜色、线的类型、是否显示置信区间等
用?ggsurvplot查看更多参数设置
library("survival")
library("survminer")
fit<- survfit(Surv(Months, Status) ~ Expression, data = svData)
ggsurvplot(fit, pval = TRUE,linetype = c("solid", "dashed"), #线的类型
palette = c("blue","red"),#线的颜色
legend.title="",legend=c(0.7,0.9),legend.labs=c("High-expression","low-expression"),
conf.int = F) #不显示置信区间
![]([https://files.mdnice.com/user/47194/9b0eac92-d851-4a74-a190-83b8cc270514.png](https://files.mdnice.com/user/47194/9b0eac92-d851-4a74-a190-83b8cc270514.png))
ggsurvplot(fit, pval = TRUE, linetype = "solid",
palette =c("blue","red"),
legend.title="",legend=c(0.7,0.9),legend.labs=c("High-expression","low-expression"),
conf.int = T,#显示置信区间
conf.int.style="ribbon",#展示方式
conf.int.alpha=0.1)#透明度
ggsave(file="20230829.pdf")
# Saving 9.9 x 5.73 in image
# 输出的pdf文件是矢量图,可以在Illustrator等软件里进行字体、字号等编辑操作