Удалить имя переменной из легенды в 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")