2012-05-08 14 views
19

मैं एक GGplot2 संगोष्ठी http://dl.dropbox.com/u/42707925/ggplot2/ggplot2slides.pdf से एक आकृति को फिर से बनाने की कोशिश कर रहा हूं।ggplot2 - जिटर और स्थिति एक साथ चकमा

इस मामले में, मैं उदाहरण 5 को उत्पन्न करने की कोशिश कर रहा हूं, जिसमें एक चकमा के अधीन भरे हुए डेटा बिंदुओं के साथ। जब मैं कोड चलाता हूं, तो अंक सही रेखा के चारों ओर केंद्रित होते हैं, लेकिन कोई जिटर नहीं होता है।

यहां प्रस्तुति से सीधे कोड है।

set.seed(12345) 
hillest<-c(rep(1.1,100*4*3)+rnorm(100*4*3,sd=0.2), 
     rep(1.9,100*4*3)+rnorm(100*4*3,sd=0.2)) 
rep<-rep(1:100,4*3*2) 
process<-rep(rep(c("Process 1","Process 2","Process 3","Process 4"),each=100),3*2) 
memorypar<-rep(rep(c("0.1","0.2","0.3"),each=4*100),2) 
tailindex<-rep(c("1.1","1.9"),each=3*4*100) 
ex5<-data.frame(hillest=hillest,rep=rep,process=process,memorypar=memorypar, tailindex=tailindex) 
stat_sum_df <- function(fun, geom="crossbar", ...) {stat_summary(fun.data=fun, geom=geom, ...) } 

dodge <- position_dodge(width=0.9) 
p<- ggplot(ex5,aes(x=tailindex ,y=hillest,color=memorypar)) 
p<- p + facet_wrap(~process,nrow=2) + geom_jitter(position=dodge) +geom_boxplot(position=dodge) 
p 
+1

यह देखते हुए कि Didzis Elferts 'position_jitterdodge' उपलब्ध ggplot2 संस्करण 1.0.0 में उपयोग करते हुए एक बेहतर जवाब प्रदान की गई है, तो आप मेरा उत्तर अन-स्वीकार करते हैं और Didzis Elferts द्वारा प्रदान की जवाब को स्वीकार करना चाहिए। –

उत्तर

27

संपादित: वहाँ position_jitterdodge का उपयोग कर ggplot2 संस्करण 1.0.0 के साथ एक बेहतर समाधान है। @Didzis Elferts 'उत्तर देखें। ध्यान दें कि dodge.width डोडिंग की चौड़ाई को नियंत्रित करता है और jitter.width झटके की चौड़ाई को नियंत्रित करता है।

मुझे यकीन नहीं है कि कोड ने पीडीएफ में ग्राफ का उत्पादन कैसे किया।

लेकिन क्या ऐसा कुछ आपके पास के बाद आता है?

मैं tailindex और memorypar को संख्यात्मक रूपांतरित करता हूं; उन्हें एक साथ जोड़ें; और परिणाम geom_jitter परत के लिए एक्स समन्वय है। ऐसा करने के लिए शायद एक और अधिक प्रभावी तरीका है। साथ ही, मैं देखना चाहता हूं कि geom_boxplot और geom_jitter कैसे डोडिंग करते हैं, और बिना किसी झटके के, पीडीएफ में ग्राफ का उत्पादन करेंगे।

library(ggplot2) 
dodge <- position_dodge(width = 0.9) 
ex5$memorypar2 <- as.numeric(ex5$tailindex) + 
    3 * (as.numeric(as.character(ex5$memorypar)) - 0.2) 

p <- ggplot(ex5,aes(x=tailindex , y=hillest)) + 
    scale_x_discrete() + 
    geom_jitter(aes(colour = memorypar, x = memorypar2), 
    position = position_jitter(width = .05), alpha = 0.5) + 
    geom_boxplot(aes(colour = memorypar), outlier.colour = NA, position = dodge) + 
    facet_wrap(~ process, nrow = 2) 
p 

enter image description here

+0

धन्यवाद, मेरी इच्छा है कि ggplot2 के भीतर एक सुरुचिपूर्ण तरीका था, लेकिन यह कामकाज सब कुछ हो जाता है। एक बार फिर धन्यवाद! – user1381239

40

ggplot2 में संस्करण 1.0.0 वहाँ position_jitterdodge() कि इस तरह की स्थिति के लिए किया जाता है नामित नई स्थिति है। इस पोस्टियन का उपयोग geom_point() के अंदर किया जाना चाहिए और fill=aes() के अंदर उपयोग किया जाना चाहिए ताकि यह दिखाया जा सके कि कौन सा चर आपके डेटा को चकमा दे। डोडिंग तर्क की चौड़ाई को नियंत्रित करने के लिए dodge.width= का उपयोग किया जाना चाहिए।

ggplot(ex5,aes(x=tailindex ,y=hillest,color=memorypar,fill=memorypar)) + 
     facet_wrap(~process,nrow=2) + 
     geom_point(position=position_jitterdodge(dodge.width=0.9)) + 
     geom_boxplot(fill="white",outlier.colour = NA, 
         position = position_dodge(width=0.9)) 

enter image description here

+0

इस पोस्ट के लिए धन्यवाद। यह बहुत उपयोगी है। मैं वर्तमान में अपना कोड लिख रहा हूं, जो अच्छी तरह से काम कर रहा है। लेकिन, मैं किसी भी तरह से outliers के लिए काला रंग मिलता है। क्या आप अनुमान लगा सकते हैं कि संभावित कारण क्या हो सकते हैं? – jazzurro

+1

ब्लैक रंग आउटलाइजर्स के लिए डिफ़ॉल्ट रंग है। इस कोड में 'geom_boxplot() '' outlier.colour = 'के लिए उन्हें दिखाने के लिए' NA' पर सेट किया गया है। –

+1

हाय, मुझे बस समाधान मिला। 'outlier.colour' रंग का रंग होना चाहिए, रंग नहीं। ऐसा लगता है कि अमेरिकी जादू का अनुकूलन नहीं है। आपके जवाब के लिए धन्यवाद। :-) – jazzurro