How can I manipulate the strip text of facet_grid plots?

前端 未结 3 1047
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 06:24

I\'m wondering how I can manipulate the size of strip text in facetted plots. My question is similar to a question on plot titles, but I\'m specifically concerned with manip

相关标签:
3条回答
  • 2020-12-02 07:05

    Nowadays the usage of opts and theme_text seems to be deprecated. R suggests to use theme and element_text. A solution to the answer can be found here: http://wiki.stdout.org/rcookbook/Graphs/Facets%20%28ggplot2%29/#modifying-facet-label-text

    qplot(hwy, cty, data = mpg) + 
          facet_grid(. ~ manufacturer) + 
          theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
    
    0 讨论(0)
  • 2020-12-02 07:19

    I guess in the example of mpg changing the rotation angle and font size is fine, but in many cases you might find yourself with variables that have quite lengthy labels, and it can become a pain in the neck (literally) to try read rotated lengthy labels.

    So in addition (or complement) to changing angles and sizes, I usually reformat the labels of the factors that define the facet_grid whenever they can be split in a way that makes sense.

    Typically if I have a dataset$variable with strings that looks like

    c("median_something", "aggregated_average_x","error","something_else")
    

    I simply do:

    reformat <– function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) }
    

    [perhaps there are better definitions of reformat but at least this one works fine.]

    dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n')
    

    And upon facetting, all labels will be very readable:

    ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
    
    0 讨论(0)
  • 2020-12-02 07:25

    You can modify strip.text.x (or strip.text.y) using theme_text(), for instance

    qplot(hwy, cty, data = mpg) + 
          facet_grid(. ~ manufacturer) + 
          opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90))
    

    Update: for ggplot2 version > 0.9.1

    qplot(hwy, cty, data = mpg) + 
          facet_grid(. ~ manufacturer) + 
          theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
    
    0 讨论(0)
提交回复
热议问题