2013-02-21 42 views
8

मैं दो अलग-अलग भूखंडों को ओवरले करने का प्रयास कर रहा हूं। एक geom_boxplot है, अन्य geom_jitter है। मैं चाहता हूं कि प्रत्येक के पास अपना रंग का स्तर हो। लेकिन जब मैं दूसरा रंग स्केल जोड़ता हूं, तो मुझे त्रुटिggplot2 - ओवरलेड प्लॉट्स के लिए दो अलग-अलग रंग स्केल का उपयोग

"Scale for 'fill' is already present. Adding another scale for 'fill', 
    which will replace the existing scale." 

मुझे लगता है कि मैं कुछ गलत कर रहा हूं।

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 और dat2 एक ही स्कीमा, लेकिन अलग-अलग मान: किसी भी सलाह की सराहना करते हैं

यह मेरा काम कर कोड का एक मोटा उदाहरण है किया जाएगा।

मुझे ओवरलेइंग ग्राफ को संबोधित करने के कई उदाहरण मिले लेकिन कोई भी इस विशिष्ट चिंता को हल करने के लिए दिखाई नहीं दिया।

उत्तर

11

सबसे पहले, उदाहरण के लिए समान नामों के साथ दो नमूना डेटा फ्रेम बनाए।

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)) 

मुझे लगता है कि आप geom_jitter() में तर्क fill= उपयोग करने के लिए क्योंकि shape=4 के लिए रंग colour= तर्क के साथ भी स्थापित किया जा सकता जरूरत नहीं है। फिर आप अपने मान सेट करने के लिए scale_colour_manual() का उपयोग कर सकते हैं। cpallete के बजाय रंगों के नामों का उपयोग किया गया।

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