r - ggplot - how to use geom_text
ggplot geom_text control de tamaƱo de fuente (1)
Traté de cambiar la fuente a 10 para las etiquetas de mi diagrama de barras en ggplot2
haciendo algo como esto:
ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
geom_bar(stat="identity",position="dodge",colour="white") +
geom_text(aes(label=V2),position=position_dodge(width=0.9),
hjust=1.5,colour="white") +
theme_bw()+theme(element_text(size=10))
ggsave(filename="barplot.pdf",width=4,height=4)
pero la imagen resultante tiene un tamaño de letra súper grande para las etiquetas de gráfico de barras.
Entonces pensé en modificar en geom_text()
con esto:
geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
hjust=1.5,colour="white")
La fuente de la etiqueta es aún más grande ...
Puedo cambiar el tamaño dentro de geom_text
a algo así como 3 y ahora se parece a la fuente 10, similar a las etiquetas de los ejes.
Me pregunto qué está pasando? ¿El theme(text=element_text(size=10))
no se aplica a las etiquetas?
¿Y por qué el tamaño de 10 en geom_text()
es diferente al del theme(text=element_text())
?
Aquí hay algunas opciones para cambiar los tamaños de texto / etiqueta
library(ggplot2)
# Example data using mtcars
a <- aggregate(mpg ~ vs + am , mtcars, function(i) round(mean(i)))
p <- ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) +
geom_bar(stat="identity",position="dodge") +
geom_text(data = a, aes(label = mpg),
position = position_dodge(width=0.9), size=20)
El size
en geom_text
cambia el tamaño de las etiquetas geom_text
.
p <- p + theme(axis.text = element_text(size = 15)) # changes axis labels
p <- p + theme(axis.title = element_text(size = 25)) # change axis titles
p <- p + theme(text = element_text(size = 10)) # this will change all text size
# (except geom_text)
Para esto ¿Y por qué el tamaño de 10 en geom_text () es diferente del del tema (text = element_text ())?
Sí, son diferentes. Hice una comprobación manual rápida y parecen estar en la proporción de ~ (14/5) para tamaños de geom_text
tamaños de theme
.
Entonces, una solución horrible para tamaños uniformes es escalar según esta proporción
geom.text.size = 7
theme.size = (14/5) * geom.text.size
ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) +
geom_bar(stat="identity",position="dodge") +
geom_text(data = a, aes(label = mpg),
position = position_dodge(width=0.9), size=geom.text.size) +
theme(axis.text = element_text(size = theme.size, colour="black"))
Esto, por supuesto, no explica por qué? y es una pita (y supongo que hay una forma más sensata de hacerlo)