ggplot geom_text font size control

后端 未结 1 727
鱼传尺愫
鱼传尺愫 2020-12-07 13:04

I tried to change the font to 10 for the labels of my bar plot in ggplot2 by doing something like this:

ggplot(data=file,aes(x=V1,y=V3,fill=V2))         


        
1条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-07 13:30

    Here are a few options for changing text / label sizes

    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)
    

    The size in the geom_text changes the size of the geom_text labels.

    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)
    


    For this And why size of 10 in geom_text() is different from that in theme(text=element_text()) ?

    Yes, they are different. I did a quick manual check and they appear to be in the ratio of ~ (14/5) for geom_text sizes to theme sizes.

    So a horrible fix for uniform sizes is to scale by this ratio

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

    This of course doesn't explain why? and is a pita (and i assume there is a more sensible way to do this)

    0 讨论(0)
提交回复
热议问题