How to use the function curve in [R] to graph a normal curve?

franvergara66 picture franvergara66 · Jan 28, 2012 · Viewed 35.4k times · Source

I'm trying to make a histogram in [R], and the normal curve that describes the histogram as follows:

w<-rnorm(1000) 
hist(w,col="red",freq=F,xlim=c(-5,5))
curve(dnorm(w),-5,5,add=T,col="blue")

But when I try to plot the normal curve by curve function shows me the following error:

Error en curve(dnorm(w), -5, 5, add = T, col = "blue") : 
  'expr' must be a function, or a call or an expression containing 'x'

What am I doing wrong?

Answer

IRTFM picture IRTFM · Jan 28, 2012

You just need to drop the "w" argument to dnorm in curve:

w<-rnorm(1000) 
hist(w,col="red",freq=F,xlim=c(-5,5))
curve(dnorm,-5,5,add=T,col="blue")

To use something other than the "unit Normal" you supply "mean" and "sd" arguments (and do remember to change the plot limits for both hist and curve:

w<-rnorm(1000, mean=10, sd=2) 
hist(w, col="red", freq=F, xlim=10+c(-5,5))
curve( dnorm(x, mean=10,sd=2), 5, 15, add=T, col="blue")

enter image description here