[英]R: Survminer double graph
我參與了一個項目,在該項目中我們為事件的發生率很低繪制了生存曲線,而Kaplan-Meier曲線(使用survminer
繪制)非常平坦。 我不想簡單地將Y軸放大,因為我認為讀者可能會誤解發病率。 同時顯示“真實”率和放大最終微小差異的一種方法是像NEJM那樣做:
但是,我還沒有找到直接在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.