web-dev-qa-db-fra.com

Comment définir des limites pour les axes dans les tracés ggplot2 R?

Je trace ce qui suit:

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

ggplot(vegLengths, aes(length, fill = veg)) +
 geom_density(alpha = 0.2)

Maintenant, disons que je veux seulement tracer la région entre x=-5000 et 5000, au lieu de la plage entière.

Comment puis je faire ça?

329
David B

Fondamentalement, vous avez deux options

_scale_x_continuous(limits = c(-5000, 5000))
_

ou

_coord_cartesian(xlim = c(-5000, 5000)) 
_

Où le premier supprime tous les points de données en dehors de la plage donnée et le second ajuste uniquement la zone visible. Dans la plupart des cas, vous ne verrez pas la différence, mais si vous ajustez quelque chose dans les données, cela modifiera probablement les valeurs ajustées.

Vous pouvez également utiliser la fonction abrégée xlim (ou ylim), qui, comme la première option, supprime les points de données en dehors de la plage donnée:

_+ xlim(-5000, 5000)
_

Pour plus d'informations, consultez la description de coord_cartesian .

Le aide-mémoire RStudio pour _ggplot2_ le rend très clair visuellement. Voici une petite section de cette aide-mémoire:

enter image description here

Distribué sous CC BY.

551
midtiby

Remarque rapide: si vous utilisez également coord_flip() pour inverser les axes x et y, vous ne pourrez pas définir de limites de plage avec coord_cartesian() car ces deux fonctions sont exclusives (voir ici ).

Heureusement, c'est une solution facile. Définissez vos limites dans coord_flip() comme ceci:

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

Cela ne fait que modifier la plage visible (c’est-à-dire ne supprime pas les points de données).

36
Bill