Search code examples
rggplot2survminer

R : ggsurvplot colored legend labels (text)


I am making a survival plot using ggsurvplot and the only thing I cannot achieve is to obtain colored labels on my legend : the legend lines are colored according to the strata, but not the associated labels. How can I do this ?

What I have for now :

ggsurv <- ggsurvplot(
   fit = fit,
   palette = colors,
   break.time.by = .5, xlab = "Years",
   surv.scale = "percent",
   ylab = "Transplant-free Survival",
   censor.shape="|", censor.size = 2,
   legend = c(.2,.3),
   legend.labs = c("0 criterion", "1 criterion", "2 criteria", "3 criteria"),
   legend.title = "",
   font.legend = c(12, "plain"),
   risk.table = T,
   risk.table.title = "Number at risk by time",
   risk.table.fontsize = 3,
   risk.table.height = 0.3, surv.plot.height = 0.7,
   title = "Transplant-free survival according to the number of\nnon-invasive low-risk criteria",
   font.main = c(12, "bold"),
   pval = T, pval.size = 4, pval.coord = c(2, .1),
   )
ggsurv$table <- ggsurv$table + theme(plot.title = element_text(size = 12, hjust = -0.3))
ggsurv$plot <- ggsurv$plot + theme(plot.title = element_text(hjust = .5))
ggsurv

enter image description here

Do you have any idea ? Thanks ! Olivier


Solution

  • You can try adding colored text items with annotation

    ggsurv$plot <- ggsurv$plot + annotate("text", x = 0, y = 0.35, 
               label = "Text here", cex=5, vjust=0.5, 
               hjust = 0, fontface=2, col="red")
    

    Then

    > ggsurv