El valor de hjust
y vjust
solo se define entre 0 y 1:
- 0 significa justificado a la izquierda
- 1 significa justificado a la derecha
Fuente: ggplot2, Hadley Wickham, página 196
(Sí, sé que en la mayoría de los casos puede usarlo más allá de este rango, pero no espere que se comporte de una manera específica. Esto está fuera de las especificaciones).
hjust
controla la justificación horizontal y vjust
controla la justificación vertical.
Un ejemplo debería aclarar esto:
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))
Para comprender lo que sucede cuando cambia el hjust
texto en el eje, debe comprender que la alineación horizontal para el texto del eje se define no en relación con el eje x, sino con todo el diagrama (donde esto incluye el texto del eje y). (Esto es, en mi opinión, desafortunado. Sería mucho más útil tener la alineación relativa al eje).
DF <- data.frame(x=LETTERS[1:3],y=1:3)
p <- ggplot(DF, aes(x,y)) + geom_point() +
ylab("Very long label for y") +
theme(axis.title.y=element_text(angle=0))
p1 <- p + theme(axis.title.x=element_text(hjust=0)) + xlab("X-axis at hjust=0")
p2 <- p + theme(axis.title.x=element_text(hjust=0.5)) + xlab("X-axis at hjust=0.5")
p3 <- p + theme(axis.title.x=element_text(hjust=1)) + xlab("X-axis at hjust=1")
library(ggExtra)
align.plots(p1, p2, p3)
Para explorar lo que sucede con la vjust
alineación de las etiquetas de los ejes:
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("X-axis labels aligned with vjust=0")
p2 <- p + theme(axis.text.x=element_text(vjust=0.5, colour="red")) +
xlab("X-axis labels aligned with vjust=0.5")
p3 <- p + theme(axis.text.x=element_text(vjust=1, colour="red")) +
xlab("X-axis labels aligned with vjust=1")
library(ggExtra)
align.plots(p1, p2, p3)