10

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?

franvergara66
  • 10,524
  • 20
  • 59
  • 101

2 Answers2

13

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

IRTFM
  • 258,963
  • 21
  • 364
  • 487
3

Simple...

curve(dnorm(w, mean=mean(w), sd=sd(w)), y = 5, to = 15, add=T, col="blue")
slfan
  • 8,950
  • 115
  • 65
  • 78
Manoj Kumar
  • 5,273
  • 1
  • 26
  • 33