生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

318

主题
发表于 2024-4-16 19:15:46 | 查看: 456| 回复: 0

背景

网上搜到过代码,但是都是用TCGA自己带的肺癌数据画的,往往我们手里的不是同样的格式的数据,本期推文带来的是自定义数据绘制。

使用场景

展示分类样本的生存曲线 场景一:患者的生存期跟基因变异的关系 场景二:药物处理导致模式动物生存期变化

载入自定义数据

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) #不显示置信区间

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等软件里进行字体、字号等编辑操作

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-11-21 17:10 , Processed in 0.076850 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表