2016-07-12 15 views
1

Ich möchte die Farben, die für die Anzeige von Gruppendiagrammen verwendet werden, mit ggsurv steuern. Sie werden unter einem Spielzeug Beispiel finden zu reproduzieren, was ich gesehen habe (vor allem aus there genommen):So weisen Sie Gruppen in Überlebensdiagrammen Farben zu

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) 

dies zweimal ausführen, werden zwei verschiedene Arten von Farbgruppenzuordnung geben, und ich will nicht Das. Ich brauche Gruppen, die immer mit der gleichen Farbe angezeigt werden, um die Konsistenz mit anderen Grafiken in einem Bericht zu gewährleisten.

NB: Ich habe festgestellt, dass die Reihenfolge, in der Farben angezeigt werden, mit den Überlebensdaten verknüpft ist, aber ich kann nicht herausfinden, wie Farbzuweisung erzwungen wird.

Irgendwelche Hilfe geschätzt!

Antwort

0

Gefunden in this post! Die Lösung ist zu verwenden limits anstelle breaks

ggsurv(dat.df.survCurv, size.est = 1) + 
    guides(linetype = FALSE) + 
    scale_colour_manual(name = "Exp. groups", limits = sort(dat.df$Group), values = cols)