2011-08-24 7 views
9

मेरे पास शायद Fitting a density curve to a histogram in R जैसा प्रश्न है। qplot का उपयोग करते हुए मैं इस आदेश के साथ 7 हिस्टोग्राम बनाया है: प्रत्येक टुकड़ा के लिएqplot के साथ बनाए गए हिस्टोग्राम में गाऊशियन वक्र कैसे जोड़ें?

, मैं एक उपयुक्त गाऊसी वक्र जोड़ना चाहते हैं।

Error in plot.xy(xy.coords(x, y), type = type, ...) : 
plot.new has not been called yet 

इसे सही ढंग से करने के लिए आदेश क्या है: जब मैं lines() विधि का उपयोग करने का प्रयास करें, मैं त्रुटि मिलती है?

+1

आप मिश्रण नहीं कर सकते आधार ग्राफिक्स कार्यों ('लाइनों()' आदि) ग्रिड ग्राफिक्स के साथ के रूप में ** gpplot2 ** और ** जाली ** पैकेज द्वारा प्रयुक्त। –

उत्तर

14

क्या आपने stat_function को आजमाया है?

+ stat_function(fun = dnorm) 

आप शायद क्रम मायने रखता है बजाय घनत्व मूल्यों साजिश में aes(y = ..density..) का उपयोग कर हिस्टोग्राम साजिश करना चाहते हैं।

this प्रश्न में बहुत उपयोगी जानकारी मिल सकती है, जिसमें विभिन्न पहलुओं पर विभिन्न सामान्य वक्रों की साजिश पर कुछ सलाह शामिल है।

dat <- data.frame(x = c(rnorm(100),rnorm(100,2,0.5)), 
        a = rep(letters[1:2],each = 100)) 

ओवरले प्रत्येक पहलू पर एक सामान्य घनत्व:

कुछ उदाहरण हैं

ggplot(data = dat,aes(x = x)) + 
    facet_wrap(~a) + 
    geom_histogram(aes(y = ..density..)) + 
    stat_function(fun = dnorm, colour = "red") 

enter image description here

सवाल मैं, के साथ एक अलग डेटा फ्रेम बनाने के लिए जुड़ा हुआ से विभिन्न सामान्य घटता:

grid <- with(dat, seq(min(x), max(x), length = 100)) 
normaldens <- ddply(dat, "a", function(df) { 
    data.frame( 
    predicted = grid, 
    density = dnorm(grid, mean(df$x), sd(df$x)) 
) 
}) 

और उन्हें साजिश अलग geom_line का उपयोग कर:

ggplot(data = dat,aes(x = x)) + 
    facet_wrap(~a) + 
    geom_histogram(aes(y = ..density..)) + 
    geom_line(data = normaldens, aes(x = predicted, y = density), colour = "red") 

enter image description here

+0

मैं आर में बहुत शुरुआती हूं, बस इसे कुछ दिनों के लिए लें। मैं इसे देख लूंगा, इशारा के लिए धन्यवाद! – mkk

+0

म्यूटो बोम! मुझे अजूडो डरावनी !!!! – Jean

5

ggplot2 आधार ग्राफिक्स तुलना में एक अलग ग्राफिक्स प्रतिमान का उपयोग करता है। (हालांकि आप इसके साथ grid ग्राफिक्स का उपयोग कर सकते हैं, सबसे अच्छा तरीका भूखंड के लिए एक नया stat_function परत जोड़ने के लिए है। ggplot2 कोड इस प्रकार है।

ध्यान दें कि मैं यह नहीं मिल सकता है qplot का उपयोग कर काम करने के लिए है, लेकिन ggplot के लिए संक्रमण यथोचित straighforward है, सबसे महत्वपूर्ण अंतर यह है कि अपने डेटा data.frame प्रारूप में होना चाहिए

भी की स्पष्ट मानचित्रण ध्यान दें y सौंदर्य aes=aes(y=..density..)) -। इस slighly असामान्य है, लेकिन stat_function परिणाम लेता है और इसे डेटा पर मानचित्रित करता है:

library(ggplot2) 
data <- data.frame(V1 <- rnorm(700), V2=sample(LETTERS[1:7], 700, replace=TRUE)) 
ggplot(data, aes(x=V1)) + 
    stat_bin(aes(y=..density..)) + 
    stat_function(fun=dnorm) + 
    facet_grid(V2~.) 

enter image description here

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