control de tamaño de fuente ggplot geom_text

93

Intenté cambiar la fuente a 10 para las etiquetas de mi gráfico de barras ggplot2haciendo 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 fuente súper grande para las etiquetas del gráfico de barras.

Entonces pensé en modificar 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 geom_texta algo así como 3 y ahora se ve como la fuente 10, similar a las etiquetas de los ejes.

Me pregunto que esta pasando ¿ theme(text=element_text(size=10))No se aplica a las etiquetas?

¿Y por qué el tamaño de 10 pulgadas geom_text()es diferente al de adentro theme(text=element_text())?

olala
fuente

Respuestas:

141

Aquí hay algunas opciones para cambiar el tamaño del 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 sizeen geom_textcambia el tamaño de las geom_textetiquetas.

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 al de theme (text = element_text ())?

Sí, son diferentes. Hice una verificación manual rápida y parecen estar en una proporción de ~ (14/5) para geom_texttamaños a themetamaños.

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 hacer esto)

user20650
fuente
2
interesante, ¿qué revisaste para averiguar la proporción 14/5?
olala
34
Veo. me recuerdas algo que leí recientemente, supongo que es la diferencia en unidades, geom_text predeterminado de 5 podría ser 5 mm y la unidad de tamaño del tema () es el punto. 1 punto es 1/72 pulgada = 0,35 mm, por lo que 1 en geom_text () es 1 mm, 1 / 0,35 = ~ 14/5 :)
olala
3
La respuesta de agstudy describe el por qué stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size
user20650