我希望能够完全控制使用ggsurv
显示组图的颜色。
您将在下面找到一个玩具示例来重现我所看到的内容(主要来自there):
require(data.table)
# Function to create synthetic survival data
simulWeib <- function(N, lambda, rho, beta, rateC)
{
# covariate --> N Bernoulli trials
x <- sample(x=c(0, 1), size=N, replace=TRUE, prob=c(0.5, 0.5))
# Weibull latent event times
v <- runif(n=N)
Tlat <- (- log(v) / (lambda * exp(x * beta)))^(1 / rho)
# censoring times
C <- rexp(n=N, rate=rateC)
# follow-up times and event indicators
time <- pmin(Tlat, C)
status <- as.numeric(Tlat <= C)
# data set
data.frame(id=1:N,
time=time,
status=status,
x=x)
}
set.seed(1234)
nbGroups <- 7
dat <- list()
for(k in 1:nbGroups)
{
dat.onegp <- simulWeib(N=10, lambda=0.01, rho=1, beta=-0.6, rateC=0.001)
# fit <- coxph(Surv(time, status) ~ x, data=dat.onegp)
dat.onegp <- mutate(dat.onegp, Group = paste0("G",k))
dat[[k]] <- dat.onegp
}
dat.df <- rbindlist(dat)
dat.df.survCurv <- survfit( Surv(dat.df$time, dat.df$status) ~ dat.df$Group )
# Vector with colors to be used
cols = colorRampPalette(brewer.pal(9, "Set1"))(nbGroups)
ggsurv(dat.df.survCurv, size.est = 1 ) +
guides(linetype = FALSE) +
scale_colour_manual(name = "Exp. groups", breaks = sort(dat.df$Group), values = cols)
运行两次会给出两组不同的颜色组,我不想这样做。我需要始终以相同的颜色显示组,以便与报告中的其他图形保持一致。
注意:我发现显示颜色的顺序与生存数据相关联,但我无法弄清楚如何强制颜色分配。
任何帮助表示赞赏!
答案 0 :(得分:0)
在this post找到它!
解决方案是使用limits
代替breaks
ggsurv(dat.df.survCurv, size.est = 1 ) +
guides(linetype = FALSE) +
scale_colour_manual(name = "Exp. groups", limits = sort(dat.df$Group), values = cols)