Удалить имя переменной из легенды в ggsurvplot

Есть ли краткий способ удалить имя переменной в легенде графиков, созданных ggsurvplot? Пример:

library(survival)
library(survminer)

set.seed(123)
df=data.frame(gender=c(rep("male", 10), rep("female", 10)), value=c(rnorm(10,mean = 2), rnorm(10,mean = 3)))
fit = surv_fit(Surv(value) ~ gender, data = df)
p = ggsurvplot(fit, data = df,  surv.median.line = "none") 

Я хочу удалить слово "пол" из легенды, как показано в следующем сюжете. Я могу добиться этого, вручную установив метки легенды:

p = ggsurvplot(fit, data = df,  surv.median.line = "none", legend.labs = c("male", "female")) 

Но есть ли способ лучше?

РЕДАКТИРОВАТЬ: Я случайно поменял местами мужчина и женщина, когда вручную назначил пол (2. график), что показывает, насколько опасен этот метод.

3 ответа

Решение

Взломайте strata с участием gsub.

names(fit$strata) <- gsub("gender=", "", names(fit$strata))
ggsurvplot(fit, data=df, surv.median.line="none")

Чтобы избежать ошибки смены меток легенды, используйте вместо этого эту опцию в функции ggsurvplot: legend.labs = levels(df$gender)

Вы можете просто изменить атрибут strata

attr(fit$strata,'names') <- c('female', 'male')

а затем сделать сюжет

p = ggsurvplot(fit, surv.median.line = "none") 
Другие вопросы по тегам