J'obtiens cet avertissement lorsque j'essaye de générer un tracé avec ggplot
.
Après des recherches en ligne pendant un certain temps, beaucoup ont suggéré que ma base de données contenait des valeurs nulles ou des données manquantes en général, ce qui n'était pas le cas.
Dans cette question, la réponse acceptée dit ce qui suit:
L'avertissement signifie que certains éléments sont supprimés car ils tombent en dehors de la plage spécifiée
Je me demandais à quoi exactement cette plage se réfère et comment quelqu'un peut-il augmenter manuellement cette plage afin d'éviter tous les avertissements?
y
axe sur cette question. Les valeurs sont limitées entre 0 et 0,12 à cause de cette fonction:ylim(0,0.12)
Réponses:
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 utilisezscale_y_continuous
(ou, de manière équivalenteylim
) oucoord_cartesian
pour définir des plages d'axes, comme expliqué ci-dessous.library(ggplot2) # All points are visible in the plot 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)) + # Change this to limits=c(0,335) and the warning disappars 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")
la source
Juste pour le shake complétant la réponse donnée par eipi10.
J'étais confronté au même problème, sans utiliser
scale_y_continuous
nicoord_cartesian
.Le conflit provenait de l'axe des x, où j'ai défini
limits = c(1, 30)
. Il semble que ces limites ne fournissent pas assez d'espace si vous voulez "esquiver" vos barres, donc R lève toujours l'erreurAjuster les limites de l'axe x pour
limits = c(0, 31)
résoudre le problème.En conclusion, même si vous ne mettez pas de limites à votre axe y, vérifiez le comportement de votre axe x pour vous assurer que vous disposez de suffisamment d'espace
la source
Même si vos données tombent dans les limites spécifiées (par exemple
c(0, 335)
), l'ajout d'unegeom_jitter()
instruction pourrait pousser certains points en dehors de ces limites, produisant le même message d'erreur.library(ggplot2) range(mtcars$hp) #> [1] 52 335 # No jitter -- no error message ggplot(mtcars, aes(mpg, hp)) + geom_point() + scale_y_continuous(limits=c(0,335)) # Jitter is too large -- this generates the error message ggplot(mtcars, aes(mpg, hp)) + geom_point() + geom_jitter(position = position_jitter(w = 0.2, h = 0.2)) + scale_y_continuous(limits=c(0,335)) #> Warning: Removed 1 rows containing missing values (geom_point).
Créé le 2020-08-24 par le package reprex (v0.3.0)
la source
J'ai rencontré cela aussi, mais dans le cas où je voulais éviter les messages d'erreur supplémentaires tout en gardant la plage fournie. Une option consiste également à sous-ensembles les données avant de définir la plage, afin que la plage puisse être conservée comme vous le souhaitez sans déclencher d'avertissements.
library(ggplot2) range(mtcars$hp) #> [1] 52 335 # Setting limits with scale_y_continous (or ylim) and subsetting accordingly ## avoid warning messages about removing data ggplot(data= subset(mtcars, hp<=300 & hp >= 100), aes(mpg, hp)) + geom_point() + scale_y_continuous(limits=c(100,300))
la source