The dnorm() function gives the density. The pnorm() function gives the distribution function. The qnorm() function gives the quantile function. The rnorm() function generates random deviates.
dnorm in r
The dnorm in r is a built-in function that calculates the density function with a mean( and standard deviation( for any value of x. The dnorm() function takes a vector, mean, sd, and log as arguments and returns the Probability Density Function.
For a discrete distribution (like the binomial), use the dnorm() function to calculate the density (p. f.), which in this case is a probability.
Syntax
dnorm(x, mean = 0, sd = 1, log = FALSE)
Parameters
x: vector of quantiles.
mean: vector of means.
sd: vector of standard deviation.
log, log.p: logical; if TRUE, probabilities p are given as log(p).
If the mean and sd are not specified, they assume the default values of 0 and 1, respectively.
Example
dnorm(0, mean = 0, sd = 1)
Output
dt <- dnorm(0, mean = 0, sd = 1)
dt
Output
[1] 0.3989423
The dnorm of 0 is the following.
dt <- dnorm(0)
dt
Output
[1] 0.3989423
Let’s find the value of the normal distribution pdf at x=10 with mean=20 and sd=5.
dt <- dnorm(x=10, mean=20, sd=5)
dt
Output
[1] 0.01079819
Let’s find the dnorm() of 1:3.
dnorm(1:3)
Output
[1] 0.241970725 0.053990967 0.004431848
Creating a plot based on the dnorm() function
The most powerful application of the dnorm() function is that it is in creating a normal distribution plot in R.
Let’s create a sequence using the seq() function.
data <- seq(-3, 3, length = 30)
dt <- dnorm(data)
dt
Output
[1] 0.004431848 0.008069595 0.014077583 0.023529569 0.037679866 0.057811501
[7] 0.084982332 0.119688537 0.161505004 0.208799242 0.258631467 0.306932813
[13] 0.348991450 0.380185689 0.396813332 0.396813332 0.380185689 0.348991450
[19] 0.306932813 0.258631467 0.208799242 0.161505004 0.119688537 0.084982332
[25] 0.057811501 0.037679866 0.023529569 0.014077583 0.008069595 0.004431848
Now, let’s create a plot based on these values.
data <- seq(-3, 3, length = 30)
dt <- dnorm(data)
plot(data, dt, type = "l", lwd = 1.5, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
Output
Find the Area Under the Normal Density Curve
The total area under any normal density curve is always equal to one. Let’s see an example of that.
x <- seq(-3, 3, length = 200)
y <- dnorm(x, mean = 0, sd = 1)
plot(x, y, type = "l")
x <- seq(-3, 0, length = 100)
y <- dnorm(x, mean = 0, sd = 1)
polygon(c(-3, x, 0), c(0, y, 0), col = "blue")
Output
Now, because the total area under the curve is 1, and because of the symmetry, the area to the left of μ=0 should be 0.5.
That is it for the dnorm() function in R.
See also

Krunal Lathiya is an Information Technology Engineer by education and web developer by profession. He has worked with many back-end platforms, including Node.js, PHP, and Python. In addition, Krunal has excellent knowledge of Data Science and Machine Learning, and he is an expert in R Language. Krunal has written many programming blogs, which showcases his vast expertise in this field.