2013-05-06 4 views
7

このコードをstatmethods [dot] netから借りました。結果は、正規分布の下にある色付き領域です。イメージをポリゴンの色として設定

mean=100; sd=15 
lb=80; ub=120 

x <- seq(-4,4,length=100)*sd + mean 
hx <- dnorm(x,mean,sd) 

plot(x, hx, type="n", xlab="IQ Values", ylab="Density", 
    main="Normal Distribution", axes=FALSE) 

i <- x >= lb & x <= ub 
lines(x, hx) 
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="red") 

area <- pnorm(ub, mean, sd) - pnorm(lb, mean, sd) 
result <- paste("P(",lb,"< IQ <",ub,") =", 
    signif(area, digits=3)) 
mtext(result,2) 

enter image description here

赤のポリゴンの色として画像を選択することが可能である場合、私は不思議でしたか?

多くの感謝!

答えて

10

あなたのコードを使って、私は基本的にIn R, how to plot with a png as background?のアドバイスに基づいてpngパッケージを使用して画像をプロットすることを提案しました(私は以下のランダム画像を使用しました)。

mean=100; sd=15 
lb=80; ub=120 

x <- seq(-4,4,length=100)*sd + mean 
hx <- dnorm(x,mean,sd) 

# load package and an image 
library(png) 
ima <- readPNG("Red_Hot_Sun.PNG") 

# plot an empty plot with your labels, etc. 
plot(1,xlim=c(min(x),max(x)), type="n", xlab="IQ Values", ylab="Density", 
    main="Normal Distribution", axes=FALSE) 
# put in the image 
lim <- par() 
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4]) 

# add your plot 
par(new=TRUE) 
plot(x, hx, xlim=c(min(x),max(x)), type="l", xlab="", ylab="", axes=FALSE) 
i <- x >= lb & x <= ub 
lines(x, hx) 
# add a polygon to cover the background above plot 
polygon(c(x,180,180,20,20), c(hx,0,1,1,0), col="white") 
# add polygons to cover the areas under the plot you don't want visible 
polygon(c(-20,-20,x[x<=lb],lb), c(-10,min(hx),hx[x<=lb],-10), col="white") 
polygon(c(ub,x[x>=ub],200,200), c(-1,hx[x>=ub],min(hx),-1), col="white") 

# add your extra text 
area <- pnorm(ub, mean, sd) - pnorm(lb, mean, sd) 
result <- paste("P(",lb,"< IQ <",ub,") =", 
    signif(area, digits=3)) 
mtext(result,2) 

はあなたに与える:

An image

+0

すごいです!どうもありがとう! –

関連する問題