使用ggplotly转换ggsurvplot生存曲线对象时出现方法不适用错误
解决ggplotly无法转换ggsurvplot对象的错误
这个问题我之前也碰到过,咱们先拆解一下错误原因:
你用ggsurvplot()生成的p1并不是一个单纯的ggplot对象,而是一个复合列表对象(类为c('ggsurvplot', 'ggsurv', 'list'))。它里面不仅包含了生存曲线的主图,还附带了风险表、生存数据总结等其他元素。而ggplotly()只能直接处理ggplot类的对象,自然就会抛出“没有适用方法”的错误。
修正方法
只需要提取ggsurvplot结果中的ggplot主图部分(也就是$plot元素),再传给ggplotly()就可以了,修正后的代码如下:
library(survival) library(survminer) library(plotly) sf_lung <- survival::survfit(survival::Surv(time, status) ~ 1, data = lung) p1 <- ggsurvplot(sf_lung, main = "Kaplan-Meier Curve for the NCCTG Lung Cancer Data") # 提取ggsurvplot中的ggplot对象进行转换 plotly::ggplotly(p1$plot)
补充说明
如果你的需求是要同时展示交互式的生存曲线和风险表,那这种方法就不够用了——因为p1$table也是一个单独的ggplot对象。这种情况下,你可以考虑用plotly原生的函数来绘制生存曲线和风险表,再通过subplot()把它们组合起来,或者使用更适配的交互式生存分析工具来实现。
内容的提问来源于stack exchange,提问作者TeoK
相关产品推荐
相关产品推荐

