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=0
ou une autre valeur donnée.
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=0
ou une autre valeur donnée.
Réponses:
xlim
et ylim
ne le coupez pas ici. Vous devez utiliser expand_limits
, scale_x_continuous
et 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
p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))
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 = 5
et y = 5
.
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
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))
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))
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.
scale_x_continuous(expand = c(0, 0), limits = c(0,5))