Forcer l'origine à commencer à 0


139

Comment puis-je définir l'origine / l'interception de l'axe y et de l'axe x dans ggplot2?

La ligne de l'axe des x doit être exactement à y=Z.

Avec Z=0ou une autre valeur donnée.

Réponses:


199

xlimet ylimne le coupez pas ici. Vous devez utiliser expand_limits, scale_x_continuouset scale_y_continuous. Essayer:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

entrez la description de l'image ici

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

entrez la description de l'image ici

Vous devrez peut-être ajuster un peu les choses pour vous assurer que les points ne sont pas coupés (voir, par exemple, le point à x = 5et y = 5.


29
J'avais également besoin de spécifier des limites scale_x_continuous(expand = c(0, 0), limits = c(0,5))
:, d'une

3
Je pense qu'une autre pièce peut être utile, qui utilise quelque chose comme expand=expand_scale(mult=c(0,0.1))si vous obtenez toujours le rembourrage aux extrémités supérieures: stackoverflow.com/a/59056123/8400969
Michael

4

Ajoutez-les simplement à votre ggplot:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

Exemple

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

entrez la description de l'image ici

Enfin, prendre grand soin de ne pas exclure involontairement les données sur votre carte . Par exemple, a position = 'dodge'pourrait faire en sorte qu'une barre soit complètement laissée hors du graphique (par exemple, si sa valeur est zéro et que vous démarrez l'axe à zéro), vous risquez donc de ne pas la voir et même de ne pas savoir qu'elle est là. Je recommande de tracer d'abord les données en entier, d'inspecter, puis d'utiliser le conseil ci-dessus pour améliorer l'esthétique de l'intrigue.


est-il également possible d'intégrer cela dans un nouveau thème ggplot?
Bolle

@Bolle Je ne suis pas sûr, mais intéressé à le savoir également, vous pouvez poser une question distincte et un lien vers ici
stevec

Lien ici pour référence future
stevec
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.