2012-08-09 13 views
10

वैज्ञानिक पत्रों को पढ़ते समय मैं अक्सर भूखंडों में आ जाता हूं जहां अंक एक-दूसरे को ओवरलैप किए बिना परेशान होते हैं। मुझे संदेह है कि उनमें से कई को GraphPad Prism नामक प्रोग्राम के साथ खींचा गया है, लेकिन निश्चित रूप से आर में ऐसा करने का एक तरीका होना चाहिए। हालांकि यह सही नहीं है (नीचे लाल बिंदुओं के साथ) मुझे लगता है कि यह यादृच्छिक झटके से कहीं ज्यादा बेहतर दिखता है।अंकुरित होने पर ओवरलैप से बचें

Jittered points without overlap

किसी को कैसे बेहतर कुछ बुनियादी समारोह का उपयोग कर ऐसा करने के लिए, जानता है, मुझे पता है कि बहुत खुशी होगी।

+4

यह अक्सर एक * beeswarm साजिश * कहा जाता है; ggplot2 के नए संस्करणों में कुछ फ़ंक्शन हैं जो यह –

+1

आह करते हैं, इस पर नाम पाने के लिए अच्छा है। अधिक जानने के लिए यह बहुत आसान बनाता है। मैं ggplot (हमेशा पसंदीदा जाली) से परिचित नहीं हूं, लेकिन मुझे लगता है कि मैं हमेशा इसके लिए एक सामान्य कार्य इंजीनियर को उलट सकता हूं। सीआरएएन में [beeswarm] (http://cran.r-project.org/web/packages/beeswarm/index.html) नामक एक पैकेज प्रतीत होता है जो यह भी करता है। – Backlin

+1

ggplot के लिए प्रासंगिक पैकेज: https://github.com/eclarke/ggbeeswarm –

उत्तर

13

यहाँ एक ggplot2 समाधान geom_dotplot() उपयोग कर रहा है:

library(ggplot2) 
set.seed(1234) 

dat = data.frame(y=c(rpois(20, 4), rpois(20, 1), runif(20, 0, 20)), 
       category=rep(c("group_1", "group_2", "group_3"), c(20, 20, 20))) 

dotplot_1 = ggplot(dat, aes(x=category, y=y)) + 
      geom_dotplot(aes(fill=category), binaxis="y", 
         stackdir="center", binwidth=0.8) + 
      stat_summary(fun.y=median, fun.ymin=median, fun.ymax=median, 
         geom="crossbar", width=0.7) 

ggsave("dotplot_1.png", dotplot_1, width=6, height=4) 

enter image description here

+0

धन्यवाद, यह अच्छा लग रहा है! और बहुत आसान भी, ggplot2 पर मेरा प्रारंभिक भ्रम का इलाज भी कर सकता है :) मैं थोड़ी देर के विचार के लिए चारों ओर रहूंगा, यह देखने के लिए कि क्या कोई जानता है कि जाली या बेस ग्राफिक्स में इसे कैसे किया जाए। – Backlin

+0

[beeswarm पैकेज] को समझ लिया गया है (http://cran.r-project.org/web/packages/beeswarm/index.html) मैंने ऊपर वर्णित मानक ग्राफिक्स सिस्टम का उपयोग किया है, इसलिए मुझे इसे पूरा करने के लिए पहले से ही दो अच्छे तरीके हैं । – Backlin

+0

डेटा बिंदुओं के आकार को समायोजित करने के लिए, geom_dotplot() को एक dotsize विकल्प जोड़ें – wint3rschlaefer

संबंधित मुद्दे