2017-02-16 1 views
0

목록에 저장할 ggplot이 여러 개 있습니다. 그러나, 그들은 내가 사용하고자하는 다른 colorscales있을 수 있습니다. 이 예제는 아래 1과 2 절에 나와 있습니다. 각각 하나의 그림이 완벽하게 생성됩니다. 그러나 둘을 결합하면 두 번째 것은 첫 번째 것보다 색상의 눈금이 더 적기 때문에 (1), 첫 번째 것을 인쇄 할 때 오류가 반환됩니다 (오류 : 수동 배율의 값이 충분하지 않지만 단지 1 개만 제공됩니다.) 이전 버전의 ggplot (2.1.0) 때문인지 확실하지 않습니다. 그러한 문제를 해결하기위한 어떤 아이디어라도 감사하십시오.동일한 scale_colour_manual을 공유하는 여러 ggplot을 중지 하시겠습니까?

data1<-mtcars; 
data1$cyl<-as.factor(data1$cyl); 
#section 1 # 
plotlist[[1]]<-ggplot(data1[],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+ 
    geom_bar(stat='identity',position="dodge",size=1); 
colourCount <- 3; 
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)])); 

plotlist[[1]]<-plotlist[[1]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+ 
    scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1));#adjust color 

#section 2 # 
plotlist[[2]]<-ggplot(data1[data1$cyl==4,],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+ 
    geom_bar(stat='identity',position="dodge",size=1); 

colourCount <- 1; 
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)])); 
plotlist[[2]]<-plotlist[[2]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+ 
    scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1)); 
+0

이것은 자바 스크립트가 아니라 R입니다. 세미콜론? Srsly? – hrbrmstr

답변

0

두 그래프 모두에 대해 colourCount에 대해 동일한 변수를 사용하고 있습니다. 당신이

colourCount <- list() 
colourCount[[1]] <- 3; 
... 
colourCount[[2]] <- 1; 

로 변경하고 각 플롯에서 해당 변수 이름을 사용하는 경우 그래서 당신은 colourCount 1에 영향을 미치는 후, 최초의 줄거리를 호출 할 때, 값의 수는

(1 대신 3) 잘못 그것은 작동합니다.

+0

@timat 답장을 보내 주셔서 감사합니다. 이 간단한 경우에 작동합니다. 그러나, 그것이 루프가 될 때 (왜냐하면 나는 여전히 colourCount [[ii]를 정의한다) 나를 위해 작동하지 않는다. 무엇이 문제의 원인인지 확실하지 않습니다. 하지만 해결 방법은 객체가 각 루프 내에서 생성 된 후 ggplot_build (plotlist [[ii]])를 호출하는 것입니다. 그런 실수는 없어 질 것 같습니다.하지만 다시 한번 고마워요. – winwindeal

+0

당신을 진심으로 환영합니다. 이 경우에 작동하면 해결 된 것으로 표시 할 수 있습니까? (downvote 화살표 아래에있는 회색 체크를 클릭하십시오. – timat

관련 문제