Comment superposer une courbe normale sur un histogramme dans R (2 exemples)
Souvent, vous souhaiterez peut-être superposer une courbe normale sur un histogramme dans R.
Les exemples suivants montrent comment procéder en base R et en ggplot2 .
Exemple 1 : superposer une courbe normale sur un histogramme en base R
Nous pouvons utiliser le code suivant pour créer un histogramme en base R et superposer une courbe normale sur l’histogramme :
#make this example reproducible
set.seed(0)
#define data
data <- rnorm(1000)
#create histogram
hist_data <- hist(data)
#define x and y values to use for normal curve
x_values <- seq(min(data), max(data), length = 100)
y_values <- dnorm(x_values, mean = mean(data), sd = sd(data))
y_values <- y_values * diff(hist_data$mids[1:2]) * length(data)
#overlay normal curve on histogram
lines(x_values, y_values, lwd = 2)
La courbe noire dans le tracé représente la courbe normale.
N’hésitez pas à utiliser les arguments col , lwd et lty pour modifier respectivement la couleur, la largeur et le type de ligne :
#overlay normal curve with custom aesthetics
lines(x_values, y_values, col='red', lwd=5, lty='dashed')
Exemple 2 : superposer la courbe normale sur l’histogramme dans ggplot2
Nous pouvons utiliser le code suivant pour créer un histogramme dans ggplot2 et superposer une courbe normale sur l’histogramme :
library(ggplot2)
#make this example reproducible
set.seed(0)
#define data
data <- data.frame(x=rnorm(1000))
#create histogram and overlay normal curve
ggplot(data, aes(x)) +
geom_histogram(aes(y = ..density..), fill='lightgray', col='black') +
stat_function(fun = dnorm, args = list(mean=mean(data$x), sd=sd(data$x)))
La courbe noire dans le tracé représente la courbe normale.
N’hésitez pas à utiliser les arguments col , lwd et lty pour modifier respectivement la couleur, la largeur et le type de ligne :
#overlay normal curve with custom aesthetics
ggplot(data, aes(x)) +
geom_histogram(aes(y = ..density..), fill='lightgray', col='black') +
stat_function(fun = dnorm, args = list(mean=mean(data$x), sd=sd(data$x)),
col='red', lwd=2, lty='dashed'))
Remarque : Vous pouvez trouver la documentation complète de stat_functionici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :
Comment créer un histogramme de fréquence relative dans R
Comment spécifier des ruptures d’histogramme dans R