2013-02-21 15 views
8

Próbuję nakładać dwie różne działki. Jeden to geom_boxplot, drugi geom_jitter. Chciałbym, aby każdy miał własną skalę kolorów. Ale kiedy dodaję drugą skalę kolorów, otrzymuję błądggplot2 - używanie dwóch różnych skal kolorów dla nakładanych działek

Zakładam, że robię coś nie tak. Wszelkie porady byłyby docenić

To jest szorstka przykład mojego kodu pracy:

P <- ggplot(dat) + 
      geom_boxplot(aes(x=ve, y=metValue, fill=metric), alpha=.35, w=0.6, notch=FALSE, na.rm = TRUE) + 
      scale_fill_manual(values=cpalette1) + 
      geom_hline(yintercept=0, colour="#DD4466", linetype = "longdash") + 
      theme(legend.position="none") 

P + geom_jitter(dat2, aes(x=ve, y=metValue, fill=atd), 
       size=2, shape=4, alpha = 0.4, 
       position = position_jitter(width = .03, height=0.03), na.rm = TRUE) + 
       scale_fill_manual(values=cpalette2) 

dat i dat2 mają ten sam schemat, ale różne wartości.

Znalazłem kilka przykładów dotyczących nakładania wykresów, ale żaden z nich nie wydawał się odpowiadać na tę szczególną obawę.

Odpowiedz

11

Najpierw wykonano dwie przykładowe ramki danych o takich samych nazwach jak w przykładzie.

dat<-data.frame(ve=rep(c("FF","GG"),times=50), 
       metValue=rnorm(100),metric=rep(c("A","B","D","C"),each=25), 
       atd=rep(c("HH","GG"),times=50)) 
dat2<-data.frame(ve=rep(c("FF","GG"),times=50), 
       metValue=rnorm(100),metric=rep(c("A","B","D","C"),each=25), 
       atd=rep(c("HH","GG"),times=50)) 

Zakładam, że nie trzeba używać argumentu fill= w geom_jitter() ponieważ kolor shape=4 można ustawić również z colour= argument. Następnie możesz użyć wartości scale_colour_manual(), aby ustawić swoje wartości. Zamiast cpallete właśnie używane nazwy kolorów.

P <- ggplot(dat) + 
    geom_boxplot(aes(x=ve, y=metValue, fill=metric), alpha=.35, w=0.6, notch=FALSE, na.rm = TRUE) + 
    geom_hline(yintercept=0, colour="#DD4466", linetype = "longdash") + 
    scale_fill_manual(values=c("red","blue","green","yellow"))+ 
    theme(legend.position="none") 

P + geom_jitter(data=dat2, aes(x=ve, y=metValue, colour=atd), 
       size=2, shape=4, alpha = 0.4, 
       position = position_jitter(width = .03, height=0.03), na.rm = TRUE) + 
       scale_colour_manual(values=c("red","blue")) 

enter image description here

Powiązane problemy