美文网首页
R语言用patchwork对ggsurvplot进行排序

R语言用patchwork对ggsurvplot进行排序

作者: CrimsonUMO | 来源:发表于2022-10-14 21:32 被阅读0次

patchwork包是一个非常方便能够对多个ggplot对象进行排序、合并输出的包。但是在批量做生存曲线的时候,发现这个包不能对ggsurvplot对象进行排序,并且会出现如下报错:

> patchwork::wrap_plots(plist,ncol = 5,nrow = 1,guides = "collect")
Error: Only know how to add ggplots and/or grobs

class一下里面的元素,会发现生存曲线的对象类型跟ggplot对象不太一样。

> class(plist[[1]])
[1] "ggsurvplot" "ggsurv"     "list" 

而且ggsurvplot对象不能直接变成ggplot对象

> as_ggplot(plist[[1]])
Error in gList(...) : only 'grobs' allowed in "gList"

这怎么办呢?

想了一下,ggsurvplot本身也是一个list,ggplot对象也是list,两个list之间应该会有一些相似的元素。打开一个ggsurvplot对象看一下,可以看到里面包含了一个ggplot对象


ggsurvplot对象的内部元素

那接下来的事情就很简单了,在原来的plist[[1]]里面再取一层,把plot这个object取出来,就可以了。
小试一下:

> tmp <- list()
> tmp[[1]] <- plist[[1]][["plot"]]
> tmp[[2]] <- plist[[2]][["plot"]]
> pdf(file="./3_survival/survival.pdf",
+     family = "Times",width = 12,height = 6,onefile = F)
> patchwork::wrap_plots(tmp,ncol = 3,nrow = 2,guides = "collect")
> dev.off()
RStudioGD 
        2 

到这里这个问题就解决了!

相关文章

网友评论

      本文标题:R语言用patchwork对ggsurvplot进行排序

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