Le titre de l'axe des y est trop proche du texte de l'axe.
ggplot(mpg, aes(cty, hwy)) + geom_point()
J'ai essayé de changer la valeur de nombreux paramètres avec theme()
mais aucune ne semble aider.
Le titre de l'axe des y est trop proche du texte de l'axe.
ggplot(mpg, aes(cty, hwy)) + geom_point()
J'ai essayé de changer la valeur de nombreux paramètres avec theme()
mais aucune ne semble aider.
De ggplot2 2.0.0
vous pouvez utiliser le margin =
argument de element_text()
pour modifier la distance entre le titre de l'axe et les chiffres. Définissez les valeurs de l'élément margin
en t
op, r
ight, b
ottom, et l
côté gauche de l'élément.
ggplot(mpg, aes(cty, hwy)) + geom_point()+
theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0)))
margin
peut également être utilisé pour d'autres element_text
(voir ?theme
), tels que axis.text.x
, axis.text.y
y title
.
ajout
afin de définir la marge pour les titres d'axe lorsque l'axe a une position différente (par exemple, avec l'option scale_x_...(position = "top")
vous aurez besoin d'un paramètre de thème différent, par exemple axis.title.x.top
. Voir https://github.com/tidyverse/ggplot2/issues/4343 .
Basé sur ce post de forum : https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU
Il semble que la chose la plus simple à faire est d'ajouter un saut de ligne ( \n ) avant les étiquettes de l'axe des x, et après celles de l'axe des y. Cela semble beaucoup plus facile (mais plus bête) que les solutions proposées ci-dessus.
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
xlab("\nYour_x_Label") + ylab("Your_y_Label\n")
J'espère que cela vous aidera !
Une solution qui offre un contrôle plus fin que celui de la \n
mais il est moins encombrant que d'ajouter des marges est d'utiliser vjust
en el theme
fonction.
Pour ajuster la position sur l'axe des ordonnées ou l'axe des abscisses afin d'ajouter de l'espace, il faut souvent utiliser une fonction valeur positive pour vjust
(axe des ordonnées) ou une valeur négative pour vjust
(axe des x) comme dans theme(axis.title.y = element_text(vjust = 2))
. Voir un exemple complet ci-dessous.
# load patchwork to show plots side-by-side
library(patchwork)
library(ggplot2)
# Plot A: just for comparison, moving titles *inward*
p1 <- ggplot(mpg, aes(cty, hwy)) +
geom_point() +
theme_gray() +
theme(
axis.title.y = element_text(vjust = -3),
axis.title.x = element_text(vjust = +3)
)
# Plot B: what we want, moving titles *outward*
p2 <- ggplot(mpg, aes(cty, hwy)) +
geom_point() +
theme_gray() +
theme(
axis.title.y = element_text(vjust = +3),
axis.title.x = element_text(vjust = -0.75)
)
# show plots side-by-side with patchwork package
p1 + p2 +
plot_annotation(tag_levels = "A")
Pour une raison quelconque, l'argument de la marge suggéré par Didzis Elferts n'a pas fonctionné pour moi. J'ai donc utilisé une autre astuce qui est plus flexible que l'ajout d'une ligne vide mais qui nécessite de renoncer aux ticks de l'axe.
myplot + theme(axis.ticks.x = element_blank(), axis.ticks.length.x = unit(3.25, "cm")
Je suppose que l'on peut ajouter les marques de coche manuellement avec geom_segment
. Une autre possibilité pourrait être [ggalt::annotation_ticks][1]
mais je n'ai pas pris la peine d'essayer non plus (notez que la version actuelle de ggalt sur CRAN (0.4) ne supporte pas cette fonction, celle sur github (0.6) le fait).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.