本期R包:survival和survminer,survival建立生存函数,survminer内置ggplot2,ggpubrg等包,美化曲线。

一行代码配一个图,逐步讲解代码含义。

喜欢的小伙伴记得关注、点赞加转发,分享给更多的人。

公众号回复20210201获取本期代码和数据。

或在本公众号后台回复  KM 

目录

一、人群总体生存的KM曲线

二、某个变量的KM曲线

三、KM曲线美颜

  1. 累计死亡曲线

  2. xy轴标签

  3. 图例位置-1

  4. 图例位置-2

  5. xy轴刻度/数字等

  6. 生存率置信区间

  7. 删失点修改

  8. P值及log-rank检验

  9. 配色方案-1

  10. 配色方案-2

  11. 综合版的KM曲线


0

载入数据

#1.载入包
library(survival)
library(survminer)
#2.清理工作环境
rm(list = ls())
#3.读入数据
aa<- read.csv('20210201.csv')
#4.查看数据前6行
head(aa)
#5.查看数据数据性质
str(aa)
#6.查看生存或死亡人数
aa$status<-factor(aa$status)
summary(aa$status)

建立人群总体生存函数

km<-survfit(Surv(time,status==0)~1,data=aa)

注:status==0是指定0是结局即死亡,~1是看总体生存的情况。(status,0=死亡;1=生存)

#查看整个数据集结局(死亡)的发生时间
#详细见图片说明
summary(km)

summary(km)是该生存函数最重要的结果,它总结了生存分析所有的信息。包括3.5年生存率及其95%CI ,中位生存时间,每个时间点的患者总数和死亡患者数目。之后的操作和美化时所汇报的信息均来自于它。

详见图片:

查看3.5年生存率

summary(km,time=c(36,60))

画一个最常用的美化图形

ggsurvplot(km, conf.int=T, #是否显示生存率的95%CIrisk.table=TRUE,#显示风险表palette="lancet", #柳叶刀配色title="Kaplan-Meier Curve ", #大标题risk.table.height = 0.25 #风险表的高度比例) 

某个变量的KM曲线

km1<-survfit(Surv(time,status==0)~sur,data=aa)

~后1改为sur或其他变量即可(sur=手术,亚变量sur=保乳术;MAST=根治术 ;No=未手术)

summary(km1)
#查不同手术方式的3.5年生存率
summary(km1,time=c(36,60))

ggsurvplot(km1, pval=TRUE, #显示p值pval.coord = c(0, 0.2),#p值位置坐标pval.size =5,#p值字体大小conf.int=T, #是否显示生存率的95%CIrisk.table=TRUE,#显示风险表risk.table.height = 0.25, #风险表的高度palette="lancet", #柳叶刀配色title="Kaplan-Meier Curve for OS ", #大标题legend.labs=c("保乳", "全切","无手术"), legend.title="手术",  #改图例名称 surv.median.line = "hv" #中位生存期。) 

km曲线美颜

美化其实就是在ggsurvplot()内加一行行的代码,下面是一码一图

0.  先看无美化的ggsurvplot(km1)

ggsurvplot(km1)

1. 将生存曲线改为累计死亡曲线

ggsurvplot(km1, fun = "cumhaz"# 累计死亡曲线)

2. 更改xy轴标签

ggsurvplot(km1,xlab="时间(月)" ,#x轴标签ylab="总生存率"  #y轴标签)

3. 更改图例位置-1

ggsurvplot(km1,legend="left")
#图例位置上、下、左、右、无=
#"top"(默认),"bottom","left","right","none"

4. 更改图例位置-2

#以xy坐标确定图例位置
ggsurvplot(km1,legend=c(20,0.4))

5. 更改xy轴刻度/数字等

ggsurvplot(km1,break.x.by=12 ,#x轴刻度的间距.例如12月一个刻度break.y.by=0.2 ,# 设定y轴刻度的间距,如break.y.by = 0.2surv.scale="percent" ,#"percent"生存用百分数表示#xlim= c(0,80), #一般用不到ylim=c(0,1), # y轴的范围axes.offset=FALSE # 为FALSE,则生存曲线图的坐标轴从原点开始。
)

6. 生存率的置信区间

ggsurvplot(km1,conf.int = TRUE,#打开置信区间#conf.int.style="step",# 设置置信区间的类型conf.int.alpha =0.3#指定置信区间填充颜色的透明度(0-1)
)

7. 删失点修改

ggsurvplot(km1,censor=T, #隐藏删失,默认为T,关掉为Fcensor.shape=124, # 删失的形状;默认为 +为3,|为124。censor.size=4.5 # 删失形状的大小,默认为4.5。
)

8. P值及log-rank检验

ggsurvplot(km1,pval = TRUE,#打开P值pval.size=6, # p值字体大小,默认为5。pval.coord=c(20,0.1), # p值坐标=c(x,y)pval.method=TRUE,#打开log.rankpval.method.size=6, #log.rank字体大小pval.method.coord=c(1,0.1)#log.rank的坐标)

log-rank检验

log_rank<-survdiff(Surv(time, status==0)~sur,rho=0,data=aa);log_rank

9.  配色方案-1

ggsurvplot(km1, palette="lancet") #使用柳叶刀自动配色,我最喜欢的配色# 其他高分SCI的配色,jco的也很好看。任选一个
# "grey","npg","aaas","lancet","jco",
# "ucscgb","uchicago",
#"simpsons","rickandmorty".

10.  配色方案-2

ggsurvplot(km1, palette=c("red", "yellow", "green"))
#自己配色,有几条线选几个颜色,例如
# "red", "pink", "purple",
# "deep-purple", "indigo",
# "blue", "light-blue", "cyan",
# "teal", "green", "light-green", "lime",
# "yellow", "amber", "orange",
# "deep-orange", "brown", "grey","blue-grey"

整合版本的KM曲线,根据需要删减代码

ggsurvplot(km1, title  = "三种手术方式患者的生存曲线",  xlab = "时间(月)", ylab = "生存率", font.main = c(16, "bold", "darkblue"), #字体大小,样式和颜色font.x = c(12,  "bold.italic","red"), #x轴标签的字体大小,斜体和颜色font.y = c(14, "darkred"), #y轴的字体大小,颜色font.tickslab = c(12, "plain", "darkgreen"), #更改刻度标签的字体大小,样式和颜色legend = c(0.2, 0.2), legend.title = "手术方式", legend.labs = c("保乳术", "全切术","未手术"), size = 1,  #更改线号linetype = "strata", #按组更改线型(即“分层”)break.x.by=12 ,break.y.by=0.2 ,surv.scale="percent" ,palette ="aaas", conf.int = T, pval = TRUE, pval.coord = c(12, 0),    pval.size = 5, pval.method=TRUE,pval.method.size=5, pval.method.coord=c(1,0),surv.median.line = "hv",  risk.table = "absolute", #"absolute"、"percentage"、"abs_pct"", #绝对人数、百分比和危险之中#risk.table.pos =in,#分线表放在图内risk.table.col = "strata", #按组更改风险表颜色risk.table.y.text.col = TRUE, #颜色风险表文本注释(按层)risk.table.y.text = FALSE, #在风险表图例中的文本注释中显示条形而不是名称risk.table.height = 0.2,  risk.table.title="时间点下的人群数目",fontsize=4,#风险表字体#ggtheme = theme_bw(), #使用主题自定义情节和风险表。#xlim = c(0, 95), ylim = c(0, 1)
)

ggsurvplot()函数的细节其实还有很多,这里只选择大家最常用的。

需要哪种细节时,只需将代码写入括号内,代码间以英文逗号隔开就可以了。

本期内容就到这里了,制作不易,喜欢的小伙伴帮忙点赞和转发,多谢大家支持!!

END

本公众号致力于打造实用的科研干货和临床学习资料分享平台,假如你有临床和科研上的问题或经验分享,请私信我。

感谢阅读,如有错误请指正!

R绘图| Kaplan-Meier曲线及美化相关推荐

  1. R绘图 | 一幅小提琴图的美化之旅

    violin_beauty 五一假期,来点轻松点的知识! 整个新系列.目前的几个系列, #R实战  以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文 ...

  2. 国庆特惠 !| CNS图表复现|生信分析|R绘图 资源分享讨论群!

    cover ❝ Q:群里有哪些资源? A:2022.12.31前木舟笔记公众号更新的所有资源.(具体目录详见下方) Q:2022年都快结束了,现在加群不是亏了? A:无论什么时候加群,拿到的资源都是一 ...

  3. R绘图-物种、环境因子相关性网络图(简单图、提取子图、修改图布局参数、物种-环境因子分别成环径向网络图)

    https://doi.org/10.1016/j.soilbio.2020.107782 有师妹想要绘制一张类似上图的环境因子-物种相关性网络图.这张图其实还挺好复现的,将环境因子与物种都作为变量一 ...

  4. 【软件构造】java使用海龟绘图绘制黄金分割曲线

    java的海龟绘图是一个建议的绘图库,只能提供了简易的绘制直线和画笔转向的函数接口.我尝试使用海龟绘图绘制黄金分割曲线 首先,让画笔由小到大重复绘制黄金比例的长方形,每次循环边长的比例都增大1/0.6 ...

  5. R绘图 | 堆叠柱状图

    stack_bar 整个新系列.目前的几个系列, 「#R实战」  以「生信分析」为主, 「#跟着CNS学作图」 以「复现顶刊」Figure为主,而本系列 「#R绘图」 则是学习不在文章中但同样很好看的 ...

  6. R绘图 | 描述性统计常用图(散点图+柱状图+饼图)

    descriptive 整个新系列.目前的几个系列, #R实战  以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文章中但同样很好看的图,致力于给同学 ...

  7. R绘图 | 山峦图(ggridges)

    ridgeline 整个新系列.目前的几个系列, #R实战  以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文章中但同样很好看的图,致力于给同学们在 ...

  8. html制作曲线,HTML5 canvas基本绘图之绘制曲线

    是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingContext2D对象,我们可以通过JavaScript脚本来控 ...

  9. R语言可视化R原生plot函数与ggplot可视化结果组合、整合输出实战:原生R绘图plot函数可视化、ggplot2包可视化、R原生plot函数与ggplot可视化结果组合

    R语言可视化R原生plot函数与ggplot可视化结果组合.整合输出实战:原生R绘图plot函数可视化.ggplot2包可视化.R原生plot函数与ggplot可视化结果组合 目录

  10. R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化

    R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化 目录 R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使 ...

最新文章

  1. nginx 配置文件
  2. everedit选择_EverEdit(文本编辑器)
  3. python3 修饰器_【python3】修饰器简单理解
  4. 宣汉计算机公办学校,宣汉职业中专学校是公办的吗
  5. hadoop学习笔记(二):centos7三节点安装hadoop2.7.0
  6. C和指针之字符串总结
  7. POJ3678-Katu Puzzle【2-SAT】
  8. Java 8 Stream Api 中的 peek、map、foreach区别
  9. 利用UrlRewrite,asp.net动态生成htm页面(补充说明)
  10. MongoDB 宣布已收购数据库托管公司 mLab
  11. Java项目 学生信息管理系统 DAO设计模式
  12. SQL200修改服务器IP,如何修改SQL IP地址
  13. Vba实现工作薄和工作表密码破解
  14. 让你无法拒绝的数学之美,美的完美无瑕
  15. 4选1数据选择器程序及testbench文件,给出仿真波形,分析
  16. 英语句式参考纯享版 - 定语从句
  17. Aerospike SSD模式下,刷写磁盘和写入数据swb的关系
  18. C++ STL使用实例
  19. 致敬5G时代“她力量”,那些让人怦然“兴”动的女神们
  20. 关键词(快排)刷词原理和方法

热门文章

  1. AvgPool2d函数
  2. 如何添加二级域名(图文超级详细)
  3. 百度世界推出“轻应用” :人人都可开发
  4. 感受晋味新年俗 你的高铁票可享景区门票优惠
  5. 数码管与74HC573,74HC138电路
  6. HDU 5294 - Tricks Device(最短路+最小割)
  7. 用【花生壳】穿透内网主机运用dai搭建校园实现访问外网访问只有学校内网的教务系统
  8. “21天好习惯“ 第五期 — 5
  9. python使用Speech_Recognition实现普通话识别(一)
  10. c语言程序设计精髓第五章编程题