2013-05-12 32 views
0

的一部分。我富爾德的怎麼做,這裏的例子:顏色我想補或顏色的正常分佈的一部分正態分佈

http://msenux.redwoods.edu/math/R/StandardNormal.php

x=seq(-4,4,length=200) 
y=dnorm(x) 
plot(x,y,type="l", lwd=2, col="blue") 
x=seq(-1,1,length=100) 
y=dnorm(x) 
polygon(c(-1,x,1),c(0,y,0),col="gray") 

但是,如果我嘗試概括上面的代碼爲x軸的任何部分最好我能想出是:

sigma <- 1 
mu <- 0 

lower.x <- -0.0 
upper.x <- 2.1 

x <- seq(-4, 4, length = 200) 
y <- (1/(sigma * sqrt(2*pi))) * (exp(1)^((-1 * ((x - mu)^2))/(2*(sigma^2)))) 
plot(x,y,type="l", lwd=2, col="blue") 

x=seq(lower.x, upper.x, length=100) 
y <- (1/(sigma * sqrt(2*pi))) * (exp(1)^((-1 * ((x - mu)^2))/(2*(sigma^2)))) 
polygon(c(lower.x,x,1), c(0,y,0), col="gray") 

我認爲錯誤涉及到第二個長度聲明,但我無法弄清楚如何糾正錯誤。另外,我希望正態分佈曲線的藍線不被陰影區域的邊界覆蓋。儘管這不是那麼重要。感謝您的任何建議。

+0

您可能會發現此鏈接有用https://stat.ethz.ch /pipermail/r-help/2003-May/033971.html – 2013-05-12 05:29:29

回答

1

或多或少來自:http://www.fernandohrosa.com.br/en/P/shaded_areas_in_r/

lower.x <- 0 
upper.x <- 2.1 
step <- (upper.x - lower.x)/100 
sigma <- 1 
mu <- 0 
bounds <- c(mu-3*sigma, mu+3*sigma) 
cord.x <- c(lower.x,seq(lower.x,upper.x,step),upper.x) 
cord.y <- c(0,dnorm(seq(lower.x,upper.x,step),mu,sigma),0) 
curve(dnorm(x,mu,sigma),xlim=bounds) 
polygon(cord.x,cord.y,col='skyblue') 

另請參閱http://www.r-bloggers.com/functions-for-plotting-and-getting-greek-in-labels/ 並供將來參考: How to shade a region under a curve using ggplot2

1

下面的代碼似乎做我想做的,或者幾乎如此。

我用下面的代替length聲明by語句。我不能肯定,但我懷疑x值的第二序列必須x值的第一序列的子集。

我然後重繪正態分佈曲線來覆蓋多邊形的頂灰色邊框。也許我想提高成績的唯一的方面是,藍色是有點暗的地方覆蓋了灰色。但是這一點似乎很小。

sigma <- 1 
mu <- 0 

lower.x <- -0.0 
upper.x <- 2.1 

x <- seq(-4, 4, by = 0.1) 
y <- (1/(sigma * sqrt(2*pi))) * (exp(1)^((-1 * ((x - mu)^2))/(2*(sigma^2)))) 
plot(x,y,type="l", lwd=2, col="blue") 

x=seq(lower.x, upper.x, by = 0.1) 
y <- (1/(sigma * sqrt(2*pi))) * (exp(1)^((-1 * ((x - mu)^2))/(2*(sigma^2)))) 
polygon(c(lower.x,x,upper.x), c(0,y,0), col="gray") 
lines(x, y, col="blue", lwd=2)