来自 survminer 包的 ggsurvplot() 中的曲线以外的其他变量的颜色
Color by other variable than used for curves in ggsurvplot() from the survminer package
当使用 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)
我希望曲线的形状和含义与上面的生存图中一样,但 "squamous" 和 "smallcell" 的颜色相同(并表示 "group1") 并且其他两条曲线具有 "group2" 颜色。图例应包含两个条目:"group1" 和 "group2"。
下面是一个示例代码,可以更好地解释我正在尝试做什么(都不起作用)
# 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)
为了完整性回答这个问题。用户Henrik在评论中提供的解决方案。可能只适用于最新版本的 survminer [0.4.0]。
library(survival)
library(survminer)
veteran <- veteran
#coding an external 'superset' variable is unnecessary
surv <- survfit(Surv(time, status) ~ celltype, data = veteran)
ggsurvplot(fit = surv, palette = c("red", "red", "blue", "blue"), data = veteran)
当使用 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)
我希望曲线的形状和含义与上面的生存图中一样,但 "squamous" 和 "smallcell" 的颜色相同(并表示 "group1") 并且其他两条曲线具有 "group2" 颜色。图例应包含两个条目:"group1" 和 "group2"。
下面是一个示例代码,可以更好地解释我正在尝试做什么(都不起作用)
# 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)
为了完整性回答这个问题。用户Henrik在评论中提供的解决方案。可能只适用于最新版本的 survminer [0.4.0]。
library(survival)
library(survminer)
veteran <- veteran
#coding an external 'superset' variable is unnecessary
surv <- survfit(Surv(time, status) ~ celltype, data = veteran)
ggsurvplot(fit = surv, palette = c("red", "red", "blue", "blue"), data = veteran)