Change order of one set of factors plotted in ggplot2

后端 未结 2 370
北恋
北恋 2021-01-22 01:16

I am creating a plot using ggplot2 which is almost perfect, it looks like this:

However, I want to change the order that the \'watering treatment\' boxes are sh

2条回答
  •  北荒
    北荒 (楼主)
    2021-01-22 01:41

    Following up on my comment, here's how you could use facetting to make the Water values easier to follow without a legend. I also include the factor code to set the order of the Water levels. In addition, it might be easier to just recode the levels of Water before plotting, so I include code to do that as well.

    # Fake data
    set.seed(491)
    NH4_24March_plot = data.frame(CO2=rep(c(550,475), each=30), Water=rep(c("A","B","C"), 20), 
                                  values=rnorm(60, 50, 10))
    
    # Set order of Water column
    NH4_24March_plot$Water = factor(NH4_24March_plot$Water, levels=c("B","A","C"))
    
    # Recode Water values (and note that the recoded values maintain the corresponding order 
    # of the Water levels that we set in the previous line of code)
    library(dplyr)
    NH4_24March_plot$Water_recode = recode(NH4_24March_plot$Water,
                                           "A"="optimal summer\noptimal autumn",
                                           "B"="excess summer\nlimited autumn",
                                           "C"="limited summer\nexcess autumn")
    
    ggplot(NH4_24March_plot, aes(Water_recode, values, fill=Water_recode)) +
      geom_boxplot(show.legend=FALSE) +
      facet_grid(. ~ CO2, labeller=label_bquote(cols=CO[2]:~.(CO2)~mu*mol%.%mol^{-1})) +
      scale_y_continuous(limits=c(0, max(NH4_24March_plot$values))) +
      theme_bw() 
    

提交回复
热议问题