При построении графика с помощью ggsurvplot()
хотелось бы раскрасить кривые выживания категориальной переменной, которая представляет собой надмножество категориальных переменных, используемых для определения кривых (слоев). Я прочитал всю документацию и безуспешно искал ответ. Воспроизводимый код представлен ниже, хотя фактический вызов функции ggsurvplot()
является псевдокодом.
library(survival)
library(survminer)
veteran <- veteran
veteran$group <- with(veteran,
ifelse(
celltype == "squamous" | celltype == "smallcell",
"group1", "group2"
)
)
# code used to generate the accompanying plot
surv <- survfit(Surv(time, status) ~ celltype, data = veteran)
ggsurvplot(fit = surv, data = veteran)
Я хотел бы, чтобы форма и значение кривых оставались такими же, как на приведенном выше графике выживаемости, но цвет для «плоскоклеточных» и «мелкоклеточных» был одинаковым (и представлял «группу 1»), а две другие кривые имели цвет "группа 2". Легенда должна содержать две записи: «группа1» и «группа2».
Ниже приведен пример кода, который может лучше объяснить, что я пытаюсь сделать (ни то, ни другое не работает)
# pseudo-code, version1: without the grouping data in the survfit object
surv <- survfit(Surv(time, status) ~ celltype, data = veteran)
ggsurvplot(fit = surv, color = veteran$group,
legend.labs = levels(factor(veteran$group)), data = veteran)
# pseudo-code, version2: with the grouping data in the survfit
surv <- survfit(Surv(time, status) ~ celltype + group, data = veteran)
ggsurvplot(fit = surv, color = group,
legend.labs = levels(factor(veteran$group)), data = veteran)
РЕДАКТИРОВАТЬ: было предложено использовать функцию palette
, но следующий код выдает ошибку
ggsurvplot(fit = surv, palette = c("red", "red", "blue", "blue"), data = veteran)
#Error in names(scurve_cols) <- legend.labs :
#'names' attribute [4] must be the same length as the vector [2]
Однако указание четырех различных цветов работает.
ggsurvplot(fit = surv, palette = c("red", "red1", "blue", "blue1"), data = veteran)