美文网首页TCGA数据挖掘生物信息生信绘图合集
如何将多个生存分析曲线图片进行合并拼图

如何将多个生存分析曲线图片进行合并拼图

作者: 欧阳松 | 来源:发表于2021-09-12 23:34 被阅读0次

    survminer包的ggsurvplot()函数可以画好看的生存分析曲线,也可以用分面的方法分面绘制多组图片(教程可以见我以前给生信助手上的一个小建议「凌云34」Multiple Overall Survival Plots(2),虽然说ggsurvplot()的语法基于ggplot2(其实应该是ggpubr),但是它的图却不是标准的ggplot2格式,所以对于多个生存曲线图,你并不能使用 cowplotggarrangepatchwork进行拼接,甚至于Y叔开发的ggplotify都不能转换为ggplot图形(大家如有好的方案,也可以下方评论),那么到底要怎么办才行。
    比如说有下面这种数据

    event grade size time
    1 2 small 92
    0 3 big 71
    1 3 small 58
    0 2 small 68
    0 2 big 103
    0 2 small 93
    0 2 small 111
    0 3 small 85
    0 2 small 98
    0 1 small 81
    1. 我们先按size分组,做一个生存曲线,得到下面这个图
    library(survival)
    library(survminer)
    sfit <- survfit(Surv(time, event)~size, data=phe)
    p1<-ggsurvplot(sfit,data = phe,
               palette = 'jco', 
               conf.int = T,conf.int.style='step', 
               pval = T,pval.method = T,
               risk.table = T,risk.table.pos='in',
               legend=c(0.85,0.85),
               legend.title="Size",
               legend.labs=c("small","big"),
               title="Survival curve for size", 
               ggtheme = theme_bw(base_size = 12))
    p1
    
    不同Size分组的生存曲线
    1. 我们还可以按grade分组,得到下面这个图
    gfit=survfit(Surv(time, event)~grade, data=phe)
    p2<-ggsurvplot(gfit,data = phe,
               palette = 'lancet', 
               conf.int = T,conf.int.style='step', 
               pval = T,pval.method = T,
               risk.table = T,risk.table.pos='in',
               legend=c(0.85,0.85),
               legend.title="Grade",
               title="Survival curve for grade", 
               ggtheme = theme_bw(base_size = 12) 
               )
    p2
    
    不同Grade分组的生存曲线

    然而,我们并不能拼接图形,使用下面的经典拼图代码全都会报错,连转换为ggplot都做不到

    cowplot::plot_grid(p1,p2) # 这个函数不行
    patchwork::p1+p1 # 这个函数也不行
    p1<-ggplotify::as.ggplot(p1) # 转成ggplot也不行
    

    那么,除了导出图片,用AI等工具以外,是不是就没有在R里直接的解决方案了呢?


    不然,我们可以用survminerarrange_ggsurvplots函数进行解决,如下面代码跑完,就可以得到拼图了。

    splots <- list()
    splots[[1]] <- p1
    splots[[2]] <- p2
    # 将多个图合并一起
    arrange_ggsurvplots(splots, print = TRUE,  
                        ncol = 2, nrow = 1) #定义行数和列数
    
    多个生存曲线的合并

    相关文章

      网友评论

        本文标题:如何将多个生存分析曲线图片进行合并拼图

        本文链接:https://www.haomeiwen.com/subject/yfdxgltx.html