ggplot geom_text lettergrootte controle

Ik heb geprobeerd het lettertype te wijzigen in 10 voor de labels van mijn staafdiagram in ggplot2door zoiets als dit te doen:

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)

maar de resulterende afbeelding heeft een supergrote lettergrootte voor de staafdiagramlabels.

Toen dacht ik eraan om in geom_text()dit aan te passen:

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")

Het lettertype van het label is nog groter…

Ik kan de grootte binnen geom_textveranderen in iets als 3 en nu ziet het eruit als lettertype 10, vergelijkbaar met de aslabels.

Ik vraag me af wat er aan de hand is? Is theme(text=element_text(size=10))niet van toepassing op labels?

En waarom is de grootte van 10 in geom_text()anders dan die in theme(text=element_text())?


Antwoord 1, autoriteit 100%

Hier zijn een paar opties voor het wijzigen van tekst-/labelformaten

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)

De sizein de geom_textWijzigt de grootte van de geom_textLabels.

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)

Voor deze en waarom maat van 10 in Geom_Text () verschilt van dat in thema (tekst = element_text ())?

Ja, ze zijn anders. Ik heb een snelle handmatige controle gedaan en ze lijken in de verhouding van ~ (14/5) te staan ​​voor geom_textMaten naar themeMaten.

Dus een vreselijke oplossing voor uniforme maten is op schaal door deze verhouding

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")) 

Dit verklaart natuurlijk niet waarom? en is een pita (en ik neem aan dat er een verstandige manier is om dit te doen)

Other episodes