2016-07-12 4 views
1

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) 

색상 - 그룹 할당의 서로 다른 두 세트를 줄 것이다이 두 번 실행, 내가 원하지 않는 그. 보고서의 다른 그래프와의 일관성을 위해 항상 동일한 색상으로 표시되는 그룹이 필요합니다.

NB : 색상이 표시되는 순서가 생존 데이터와 연결되어 있지만 색상 할당을 강제하는 방법을 알 수 없습니다.

도움을 주시면 감사하겠습니다.

답변

0

this post에서 발견! 해결책은 breaks 대신

ggsurv(dat.df.survCurv, size.est = 1) + 
    guides(linetype = FALSE) + 
    scale_colour_manual(name = "Exp. groups", limits = sort(dat.df$Group), values = cols) 
대신 을 사용하는 것입니다.
관련 문제