Solución:
De la noticia de lanzamiento de ggplot 2.2.0
: “El título de la trama principal ahora está alineado a la izquierda para funcionar mejor con un subtítulo”. Ver también el plot.title
argumento en ?theme
: “alineado a la izquierda de forma predeterminada”.
Como lo señaló @J_F, puede agregar theme(plot.title = element_text(hjust = 0.5))
para centrar el título.
ggplot() +
ggtitle("Default in 2.2.0 is left-aligned")
ggplot() +
ggtitle("Use theme(plot.title = element_text(hjust = 0.5)) to center") +
theme(plot.title = element_text(hjust = 0.5))
Como se indica en la respuesta de Henrik, los títulos están alineados a la izquierda de forma predeterminada comenzando con ggplot 2.2.0. Los títulos se pueden centrar agregando esto a la trama:
theme(plot.title = element_text(hjust = 0.5))
Sin embargo, si crea muchos gráficos, puede resultar tedioso agregar esta línea en todas partes. Entonces también se podría cambiar el comportamiento predeterminado de ggplot con
theme_update(plot.title = element_text(hjust = 0.5))
Una vez que haya ejecutado esta línea, todos los gráficos creados posteriormente usarán la configuración del tema plot.title = element_text(hjust = 0.5)
por defecto:
theme_update(plot.title = element_text(hjust = 0.5))
ggplot() + ggtitle("Default is now set to centered")
Para volver a la configuración predeterminada original de ggplot2, puede reiniciar la sesión de R o elegir el tema predeterminado con
theme_set(theme_gray())
los ggeasy
el paquete tiene una función llamada easy_center_title()
para hacer precisamente eso. Lo encuentro mucho más atractivo que theme(plot.title = element_text(hjust = 0.5))
y es mucho más fácil de recordar.
ggplot(data = dat, aes(time, total_bill, fill = time)) +
geom_bar(colour = "black", fill = "#DD8888", width = .8, stat = "identity") +
guides(fill = FALSE) +
xlab("Time of day") +
ylab("Total bill") +
ggtitle("Average bill for 2 people") +
ggeasy::easy_center_title()
Tenga en cuenta que al escribir esta respuesta, deberá instalar la versión de desarrollo de ggeasy
de GitHub para usar easy_center_title()
. Puedes hacerlo corriendo remotes::install_github("jonocarroll/ggeasy")
.