La valeur de hjust
et de vjust
est uniquement définie entre 0 et 1 :
- 0 signifie justifié à gauche
- 1 signifie justifié à droite
Source : ggplot2, Hadley Wickham, page 196
(Oui, je sais que dans la plupart des cas, vous pouvez l'utiliser au-delà de cette plage, mais ne vous attendez pas à ce qu'il se comporte d'une manière spécifique. Cela est en dehors des spécifications.)
hjust
contrôle l'alignement horizontal et vjust
contrôle l'alignement vertical.
Un exemple devrait clarifier cela :
td <- expand.grid(
hjust=c(0, 0.5, 1),
vjust=c(0, 0.5, 1),
angle=c(0, 45, 90),
text="text"
)
ggplot(td, aes(x=hjust, y=vjust)) +
geom_point() +
geom_text(aes(label=text, angle=angle, hjust=hjust, vjust=vjust)) +
facet_grid(~angle) +
scale_x_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2)) +
scale_y_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2))
Pour comprendre ce qui se passe lorsque vous changez le hjust
dans le texte de l'axe, vous devez comprendre que l'alignement horizontal du texte de l'axe est défini non pas par rapport à l'axe des x, mais à l'ensemble du graphique (où cela inclut le texte de l'axe des y). (C'est, à mon avis, malheureux. Il serait beaucoup plus utile d'avoir l'alignement relatif à l'axe.)
DF <- data.frame(x=LETTERS[1:3],y=1:3)
p <- ggplot(DF, aes(x,y)) + geom_point() +
ylab("Label très long pour y") +
theme(axis.title.y=element_text(angle=0))
p1 <- p + theme(axis.title.x=element_text(hjust=0)) + xlab("Axe X à hjust=0")
p2 <- p + theme(axis.title.x=element_text(hjust=0.5)) + xlab("Axe X à hjust=0.5")
p3 <- p + theme(axis.title.x=element_text(hjust=1)) + xlab("Axe X à hjust=1")
library(ggExtra)
align.plots(p1, p2, p3)
Pour explorer ce qui se passe avec l'alignement vjust
des étiquettes d'axe :
DF <- data.frame(x=c("a\na","b","cdefghijk","l"),y=1:4)
p <- ggplot(DF, aes(x,y)) + geom_point()
p1 <- p + theme(axis.text.x=element_text(vjust=0, colour="red")) +
xlab("Étiquettes de l'axe X alignées avec vjust=0")
p2 <- p + theme(axis.text.x=element_text(vjust=0.5, colour="red")) +
xlab("Étiquettes de l'axe X alignées avec vjust=0.5")
p3 <- p + theme(axis.text.x=element_text(vjust=1, colour="red")) +
xlab("Étiquettes de l'axe X alignées avec vjust=1")
library(ggExtra)
align.plots(p1, p2, p3)
1 votes
J'ai donné un exemple spécifique, dans les commentaires de la première réponse. Apparemment, l'utilisation de nombres en dehors de 0-1 est indéfinie, ce qui, sans expliquer pourquoi hjust=-1 a un comportement bizarre, explique au moins que le bizarre est à prévoir.