Le comportement que vous voyez est dû à la façon dont ggplot2
traite les données qui sont en dehors des plages d'axes du tracé. Vous pouvez modifier ce comportement selon que vous utilisez scale_y_continuous
(ou, de manière équivalente ylim
) ou coord_cartesian
pour définir des plages d'axes, comme expliqué ci-dessous.
library(ggplot2)
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
Dans le code ci-dessous, un point avec hp = 335 est en dehors de la plage y du graphique. De plus, comme nous avions l'habitude scale_y_continuous
de définir la plage de l'axe y, ce point n'est inclus dans aucune autre statistique ou mesure récapitulative calculée par ggplot, telle que la ligne de régression linéaire.
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
scale_y_continuous(limits=c(0,300)) +
geom_smooth(method="lm")
Warning messages:
1: Removed 1 rows containing missing values (stat_smooth).
2: Removed 1 rows containing missing values (geom_point).
Dans le code ci-dessous, le point avec hp = 335 est toujours en dehors de la plage y du graphique, mais ce point est néanmoins inclus dans toutes les statistiques ou mesures récapitulatives calculées par ggplot, telles que la ligne de régression linéaire. C'est parce que nous avons utilisécoord_cartesian
de définir la plage de l'axe y, et cette fonction n'exclut pas les points qui sont en dehors des plages de tracé lorsqu'elle effectue d'autres calculs sur les données.
Si vous comparez ce graphique et le précédent, vous pouvez voir que la droite de régression linéaire dans le deuxième graphique a une pente légèrement plus raide, car le point avec hp = 335 est inclus lors du calcul de la droite de régression, même s'il n'est pas visible dans le graphique .
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
y
axe sur cette question. Les valeurs sont limitées entre 0 et 0,12 à cause de cette fonction:ylim(0,0.12)