2014-10-08 15 views
8

Bu soru ggplot ile standart bir normal dağılım çizmeye çalıştığımda ortaya çıktı (stat_function ile kolay) ve aynı zamanda farklı quintiller için eğri altındaki alanı renklendiriyor - I x için bir değer aralığı ile bir veri çerçevesi ve yggplot2 stat_function - oluşturulan y değerlerini diğer katmanlardaki kullanabilir miyiz

data = data.frame(x=seq(-3,3,length.out=1000)) 
data$y=dnorm(data$x) 
data$Quintile <- with(data,ifelse(x<qnorm(0.2),"Bottom", 
           ifelse(x<qnorm(0.4),"Second", 
             ifelse(x<qnorm(0.6),"Middle", 
              ifelse(x<qnorm(0.8),"Fourth","Top"))))) 
data$Quintile <- factor(data$Quintile, levels=c("Bottom","Second","Middle","Fourth","Top")) 

ggplot(data,aes(x=x,y=y,fill=Quintile))+geom_ribbon(aes(ymax=y),ymin=0,alpha=0.5)+ 
    geom_line(color="black")+theme_bw()+theme(legend.position="bottom")+ 
    scale_fill_manual(values=c("darkgreen","red","purple","blue","gray"))+ 
    geom_vline(xintercept=c(qnorm(c(0.2,0.4,0.6,.8))),color=c("darkgreen","red","purple","blue"),size=1)+ 
    scale_y_continuous("",breaks=NULL)+scale_x_continuous("",breaks=NULL) 

ben her x için ilgili dnorm değerleri oluşturduktan sonra

enter image description here

I geom_line ve geom_ribbon ile bunu mümkün yüzgeç d stat_function kullanmak için daha çekici ve sanırım çizgi çizmek için y değerleri kümesini oluşturuyor olmalı - Ben renkli bantları eklemek için diğer katmanlardakilere erişmeye çalıştım ama bunu yapamadım - Birini görmek istiyorum bu yapılabilir açıklamak ya edebilirsiniz biz

yerine kendimi verileri oluşturmaya diğer bir deyişle

ve eğriyi çizmek için geom_line kullanmak, ben

ggplot(NULL,aes(x=c(-3,3))) + stat_function(fun=dnorm) 

ve kullanım gibi bir şey yapmak istemem neden stat_function, renklendirme yapmak için oluşturulan veriler - oluşturulan y değerlerine erişemedim (örneğin ..y'yi kullanarak denedim)

Bu değerleri kullanmanın bir yolu var mı? Öyleyse nasıl?

+2

Sen verilerinizin çerçevesini oluşturmak ve arsa çizmek için kullanılan kod sağlarsanız daha kolay yardımcı olmak için yapacağız. – eipi10

cevap

4
ggplot(NULL,aes(x=c(-3,3))) + 
    stat_function(fun=dnorm, geom="ribbon", 
       mapping = aes(ymin=0,ymax=..y..)) 
+0

Teşekkürler, ama bu bir seviyeye kadar çalışır - tüm eğriyi bu şekilde renklendirebilirsiniz - ama fikir, farklı renklerde renk quartiles veya quintiles renklendirmek - bir renk -3 ila 0 bir renk ve alan nasıl söylenir – user1617979

+0

appraoch ile sıfırdan başka bir şeyle mümkün olmasından şüphe duyuyorum, stat_function estetik haritalama fikriyle iyi bir performans göstermiyor. Muhtemelen ggplot dışındaki verileri oluşturmanız gerekecektir. – baptiste

+0

Baptiste, cevap için teşekkürler. Gerçekten sadece veriyi yaratmadan 'zarif' bir çözüm olup olmadığını görmek istedim - her zaman mümkün olduğunda daha az kod yazmak istedim – user1617979

İlgili konular