【问题标题】:Can I change the color of the surv.median.line in my Kaplan Meier plot using R ggsurvplot?我可以使用 R ggsurvplot 在我的 Kaplan Meier 图中更改 surv.median.line 的颜色吗?
【发布时间】:2018-10-21 07:35:14
【问题描述】:

我使用下面的脚本来绘制 Kaplan-Meier 曲线。

我认为中位生存线是一个很好的工具。然而,中位生存线被绘制为黑色虚线,这在图形上是压倒性的。我可以更改生存线的颜色或不透明度以减少 surv.median.line 函数的图形输出吗?

如果没有,我可以手动添加一条垂直/水平中位生存线,我可以在其中更改颜色或不透明度吗?

j <- ggsurvplot(
  fit,                     
  data = p, 
  #fun="cumhaz",
  risk.table = "abs_pct", #risk.table.col="strata",
  pval = TRUE,      
  pval.coord = c(0, 0.25),
  conf.int = T,         
  #legend.labs=c("0-4%", "5-9%", "\u226510%"),
  cumevents.title = "Cumulative number of recurrences",
  size=c(0.8,0.8,0.8,0.8),                    
  xlim = c(0,10),
  alpha=0.8,
  break.x.by = 1,    
  xlab="Time in years",
  ylab="Probability of progression-free survival",
  ggtheme = theme_gray(),             
  risk.table.y.text.col = T,
  risk.table.y.text = TRUE, 
  surv.median.line = "hv",
  ylim=c(0,1),
  cumevents=TRUE,
  #palette=c("#222a37","darkred"),
  surv.scale="percent")

j 

我尝试添加以下内容,但收到此警告:最大错误(surv_median):参数的“类型”无效(闭包)

surv_median <- as.vector(summary(fit)$table[, "median"])
df <- data.frame(x1 = surv_median, x2 = surv_median,
                 y1 = rep(0, length(surv_median)), y2 = rep(0.5, length(surv_median)))

j$plot <- j$plot + 
  geom_segment(aes(x = 0, y = 0.5, xend = max(surv_median), yend = 0.5),
               linetype = "dashed", size = 0.5)+ # horizontal segment
  geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), data = df,
               linetype = "dashed", size = 0.5) # vertical segments

print(j)

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    As of today,似乎没有直接的方法可以改变生存中线。

    这是上面代码中的一个 sn-p,用于绘制线条。

    if(nrow(df)>0){
          if(type %in% c("hv", "h"))
            p <- p +
              geom_segment(aes(x = 0, y = max(y2), xend = max(x1), yend = max(y2)),
                           data = df, linetype = "dashed", size = 0.5) # horizontal segment
    
          if(type %in% c("hv", "v"))
            p <- p + geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), data = df,
                                  linetype = "dashed", size = 0.5) # vertical segments
        }
        else warning("Median survival not reached.")
      }
    

    您可以做的不是绘制线并手动添加它,而是从代码中学习如何计算它。还有一种方法可以破解该函数以在ggsurvplot 函数之外工作。我会通过访问正在绘制的数据然后添加我自己的geom_segment 来解决这个问题。

    【讨论】:

    • 我尝试了以下操作,但收到此警告:max(surv_median) : invalid 'type' (closure) of argument。你知道如何解决吗? surv_median
    • @ChristianMirianLarsen 这听起来像是一个新问题。请把它作为一个新问题发布。不要忘记让它可重现。
    【解决方案2】:

    我对 Roman Luštrik 显示的源代码进行了编辑,该源代码位于 GitHub 上 survminer 包的 R 文件夹中,标题为“ggsurvplot_core.R”。

    我在 GitHub 中创建了一个带有实线的分支,但您也可以创建一个具有颜色和 alpha 更改的分支。让我知道您是否仍在尝试,即使已经三年了!

    我的叉子用实线代替了虚线https://github.com/brandonerose/survminer.git

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2013-09-19
      • 2022-09-24
      • 1970-01-01
      相关资源
      最近更新 更多