ggplot

2015-09-19 18 views
5

के साथ आत्मविश्वास अंतराल के साथ साधनों को साजिश करना मेरे पास कुछ डेटा है जो मैंने मॉडल से एकत्र किया है। मैं समय के साथ आबादी के आकार को साजिश करना चाहता हूं। मेरे पास प्रत्येक बार चरण में आबादी का आकार है, और 100 प्रतिकृतियां हैं। मैं हर समय चरण के लिए औसत आबादी का आकार प्लॉट करना चाहता हूं, और 95% आत्मविश्वास अंतराल (यदि संभव हो तो एक छायांकन के रूप में)।ggplot

मैंने पहले ggplot का उपयोग नहीं किया है। मैं अभी तक आर में सामान्य (आधार) भूखंडों का उपयोग कर रहा हूं। लेकिन मैं देखना चाहता हूं कि ggplot कैसा दिखता है।

यहाँ मैं अब तक है:

ggplot(data=model1, aes(x=steps., y= pop-size, col='blue')) + 
    geom_line() 

यह सभी बिंदुओं भूखंडों, और यह अच्छा लग रहा है, लेकिन मैं नहीं जानता कि कैसे सिर्फ साधन साजिश और विश्वास के अंतराल जोड़ने के लिए।

+1

आपको यहां जांचना चाहिए: http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ – AntoniosK

+1

'stat_smooth' पर भी एक नज़र डालें। – Jaap

+0

चूंकि आप (अपेक्षाकृत) नए हैं, इसलिए कृपया [यह] पढ़ें (http://stackoverflow.com/help/mcve) और [this] (http://stackoverflow.com/questions/5963269/how-to -मेक-ए-ग्रेट-आर-पुनरुत्पादित उदाहरण/5963610 # 5963610) एक अच्छी तरह से तैयार किए गए प्रश्न को कैसे उत्पन्न किया जाए, जिस पर उत्तर देने की अधिक संभावना है। – jlhoward

उत्तर

13

चूंकि आपने डेटा दोहराया है, और आप सार्थक/सीएल प्लॉट करना चाहते हैं, तो आप शायद stat_summary(...) का उपयोग कर बेहतर हैं जो डेटा को सारांशित करने के लिए डिज़ाइन किया गया है (आपने अनुमान लगाया है)। असल में, यह प्रत्येक एक्स-वैल्यू (इसलिए, mean(...) फ़ंक्शन उदाहरण के लिए फ़ंक्शन) के लिए सभी वाई-मानों पर एक फ़ंक्शन लागू करता है, और फिर जो भी ज्यामिति निर्दिष्ट करता है उसका उपयोग करके परिणाम प्लॉट करता है। यहाँ एक उदाहरण है: तो यहाँ

# sample data - should be provided in question 
set.seed(1)  # for reproducible example 
time <- 1:25 
df <- data.frame(time, 
        pop=rnorm(100*length(time), mean=10*time/(25+time))) 

library(ggplot2) 
ggplot(df, aes(x=time, y=pop))+ 
    stat_summary(geom="ribbon", fun.data=mean_cl_normal, width=0.1, conf.int=0.95, fill="lightblue")+ 
    stat_summary(geom="line", fun.y=mean, linetype="dashed")+ 
    stat_summary(geom="point", fun.y=mean, color="red") 

हम 3 परतें हैं: एक परत है कि mean(...) समारोह का उपयोग कर y- मानों, और भूखंडों geom="line" का उपयोग कर का सारांश दिया, एक परत है कि एक ही तरह से लेकिन भूखंडों को सारांशित geom="point" का उपयोग करके, और geom="ribbon" का उपयोग करने वाली एक परत को इस ग्राम को ymin और ymax सौंदर्यशास्त्र की आवश्यकता होती है, इसलिए हम अंतर्निहित जीजीप्लॉट फ़ंक्शन mean_cl_normal का उपयोग उन धारणाओं के आधार पर उत्पन्न करते हैं जो त्रुटि सामान्य रूप से वितरित की जाती हैं और इसलिए, इसका अर्थ है टी -distribution। आत्मविश्वास सीमा के लिए उपयोगी विभिन्न कार्यों पर दस्तावेज़ीकरण के लिए ?hmisc टाइप करें। परत कोड के क्रम में प्रस्तुत करते हैं, इसलिए, चूंकि आप छायांकन करना चाहते हैं, इसलिए हमें पहले त्रुटि रिबन डालना होगा।

अंत में, dplyr या कुछ ऐसे का उपयोग करके डेटा को संक्षेप में सारांशित करना संभव है, लेकिन मुझे वास्तव में ऐसा करने का बिंदु नहीं दिख रहा है।

अद्यतन (हाल ही में टिप्पणी के आधार पर): ggplot2 (2.0.0) का नवीनतम संस्करण की तरह लग रहा fun.data के तर्क को निर्दिष्ट करने की एक अलग तरह की है। इस नए संस्करण में काम करता है:

ggplot(df, aes(x=time, y=pop))+ 
    stat_summary(geom="ribbon", fun.data=mean_cl_normal, 
       fun.args=list(conf.int=0.95), fill="lightblue")+ 
    stat_summary(geom="line", fun.y=mean, linetype="dashed")+ 
    stat_summary(geom="point", fun.y=mean, color="red") 

width=... तर्क के साथ समस्या यह थोड़ा और अधिक सूक्ष्म है मुझे लगता है कि: यह वास्तव में जरूरत है नहीं (मूल जवाब मैं त्रुटि बार का इस्तेमाल किया है, और इस तर्क को दूर करने के लिए भूल गया जब मैंने इसे रिबन में बदल दिया)। Ggplot2 के पुराने संस्करण ने बाहरी तर्कों को अनदेखा किया (इसलिए, कोई त्रुटि नहीं)। जाहिर है, नया संस्करण अधिक सख्त है। शायद यह बेहतर है।

+1

मैं थोड़ा 'stat_summary (geom = "ribbon", fun.data = mean_cl_normal, color = NA, alpha = 0 पसंद करता हूं।1) ' –

+0

मैं वास्तव में त्रुटि बार पसंद करता हूं, लेकिन असल में मैंने सवाल को गलत तरीके से पढ़ा - ओपी रिबन चाहता है। मैंने अपनी प्रतिक्रिया संपादित की। – jlhoward

+0

धन्यवाद! यह पूर्ण है। मैं सुनिश्चित करूँगा कि मैंने अगली बार अपने प्रश्न में नमूना डेटा इत्यादि लगाया है। – 91dpo