2016-04-03 19 views
0

"Eğri" fonksiyonunda kullanıcı tanımlı fonksiyonları kullanmak için farklı toplam alanlara (1'e kadar) sahip normal dağılımlı yoğunluk grafikleri üretmem gerekiyor.R grafiklerinde

sdnorm <- function(x, mean=0, sd=1, lambda=1){lambda*dnorm(x, mean=mean, sd=sd)} 

Ben daha sonra farklı parametreler kullanılarak fonksiyonunu çizmek istiyorum: göreceli alanı verir - aşağıdaki işlevi kullanarak, lambda belirtebilirsiniz.

require(ggplot2) 
qplot(x, geom="blank") + stat_function(fun=sdnorm,args=list(mean=8,sd=2,lambda=0.7)) + 
    stat_function(fun=sdnorm,args=list(mean=18,sd=4,lambda=0.30)) 

enter image description here

ama gerçekten ben "eğri" işlevini kullanmaya ihtiyacım var bunun için baz R grafikleri, bunu yapmak istiyorum: ggplot2 kullanarak, bu kod çalışır. Ancak, bunu işe almak için mücadele ediyorum.

cevap

0

, ilk argüman farklı şeyler bir dizi olabileceğini görürsünüz:

bir fonksiyonun adı veya bir arama veya bir ifade x ile aynı uzunlukta bir nesneyi değerlendirecek x fonksiyonu olarak yazılır.

Bu tıpkı böylece sen, bir işlev adı veya bir ifadesi ya ilk argüman belirtebilirsiniz anlamı:

curve(sdnorm) 

varsayılan argümanlarla fonksiyonun bir arsa almak için. Aksi takdirde, ggplot2 temsilini yeniden yapmak istediğiniz olacaktır:

curve(sdnorm(x, mean=8,sd=2,lambda=0.7), from = 0, to = 30) 
curve(sdnorm(x, mean=18,sd=4,lambda=0.30), add = TRUE) 

sonucu:

curve

+0

Ah! Şimdi neyi yanlış yaptığımı görüyorum - eğri fonksiyonu için "from" ve "to" argümanlarını belirtmedim. Varsayılan ekran 0 ile 1 arasındadır. Aferin - teşekkürler. – user2085797

1

Ne ylab = 'y' eklendi ve y-eksenini yeniden etiketli olması resim güncellenmiş

x <- seq(0, 50, 1) 
plot(x, sdnorm(x, mean = 8, sd = 2, lambda = 0.7), type = 'l', ylab = 'y') 
lines(x, sdnorm(x, mean = 18, sd = 4, lambda = 0.30)) 

EDIT'e baz Ar aşağıdakileri yapabilirsiniz.

enter image description here

Bu başlangıç ​​almalısınız. Eğer ? curve için yardım dosyasına bir göz atacak olursak

+0

Aferin - teşekkürler! İlk önce x'i bir sıra olarak tanımlamayı ve sonra da değer almayı düşünmemiştim. – user2085797