簡體   English   中英

R:Survminer雙圖

[英]R: Survminer double graph

我參與了一個項目,在該項目中我們為事件的發生率很低繪制了生存曲線,而Kaplan-Meier曲線(使用survminer繪制)非常平坦。 我不想簡單地將Y軸放大,因為我認為讀者可能會誤解發病率。 同時顯示“真實”率和放大最終微小差異的一種方法是像NEJM那樣做:

https://www.nejm.org/na101/home/literatum/publisher/mms/journals/content/nejm/2011/nejm_2011.364.issue-9/nejmoa1007432/production/images/img_large/nejmoa1007432_f1.jpeg

但是,我還沒有找到直接在survminer執行此操作的方法。 為了重現性,我希望避免涉及任何Adobe軟件。

有誰知道一種方法來獲得原始圖頂部隨附的小型放大版本? 我想用survminer完成此操作,但對任何其他基於ggplot的良好KM軟件包的提示都表示贊賞。

小例子:

library(survival)
library(survminer)

df <- genfan
df$treat<-sample(c(0,1),nrow(df),replace=TRUE)
fit <- survfit(Surv(hours, status) ~ treat, data = df)

p <- ggsurvplot(fit, data = df, risk.table = TRUE, fun = 'event', ylim = c(0, 1))
p # Normal flat, singular graph

有幾種方法可以做到這一點,但有一種建議也可以使您擁有的兩個圖並使用grid.arrange 首先繪制兩個圖。 然后拉出風險表並為第一個圖單獨繪制(您不能將ggsurvplot對象放入grid.arrange )。 將第二個圖嵌套在帶有標注注記的圖一中。 最后,使用layout_matrix指定圖的尺寸,並將其與grid.arrange放在一起。

library(survival)
library(survminer)
library(grid)
library(gridExtra)

df <- genfan
df$treat<-sample(c(0,1),nrow(df),replace=TRUE)
fit <- survfit(Surv(hours, status) ~ treat, data = df)

p <- ggsurvplot(fit, data = df, risk.table = TRUE, fun = 'event', ylim = c(0, 1))
#zoomed plot and remove risk table
g <- ggsurvplot(fit, data = df, risk.table = FALSE, fun = 'event', ylim = c(0, .5))

risktab <- p$table

justplot <- p$plot

p2 <- justplot + 
      annotation_custom(grob = ggplotGrob(g$plot+
                            theme(legend.position = "none")),
                             xmin = 60,xmax=Inf,ymin = .5,ymax = Inf)

lay <- rbind(c(1,1),
             c(1,1),
             c(2,2))

gridExtra::grid.arrange(p2, risktab,
                        #use layout matrix to set sizes
                        layout_matrix=lay
)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM