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)

superposer la courbe normale sur l'histogramme en R

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)))

histogramme de superposition dans ggplot2 dans R

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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *