ggplot2: Change color for each facet in bar chart

前端 未结 2 800
孤城傲影
孤城傲影 2021-02-11 00:57

I have a faceted bar chart done with ggplot2 with this code:

ggplot(data_long, aes(x=region, y=wert)) + 
geom_bar(aes(fill = kat ), position = \"dodge\", width=.         


        
相关标签:
2条回答
  • 2021-02-11 01:53

    I'm not sure this is the best way to communicate your information, but this is how I'd approach it. Just map fill to region, and use alpha for year. Mine will be a bit different to yours because you didn't provide the structure of the data.

    ggplot(data_long, aes(type, wert)) + geom_bar(aes(fill = region, alpha = factor(kat)), position = "dodge", stat = "identity") + 
      scale_alpha_manual(values = c(0.6, 1)) +
      facet_grid(. ~ region) +
      theme_bw() + theme( strip.background  = element_blank(),
                          panel.grid.major = element_line(colour = "grey80"),
                          panel.border = element_blank(),
                          axis.ticks = element_blank(),
                          panel.grid.minor.x=element_blank(),
                          panel.grid.major.x=element_blank() ) +
      theme(legend.position="bottom")
    

    0 讨论(0)
  • 2021-02-11 01:57

    Based on the answer @alexwhan, I could manually set the colors using this code:

      farb <- c("#428953", "#CE2929", "#A3DD57", "#77E599", "#5675D6", "#65ECEF", "#FF8B07", "#D0B100", "#636363")
    
      ggplot(data_long, aes(region, wert)) +
      geom_bar(aes(fill = type, alpha = factor(kat)), position = "dodge", stat = "identity") + 
      scale_alpha_manual(values = c(0.6, 1)) +
      facet_grid(. ~ type) +
      theme_bw() + theme( strip.background  = element_blank(),
                          panel.grid.major = element_line(colour = "grey80"),
                          panel.border = element_blank(),
                          axis.ticks = element_blank(),
                          panel.grid.minor.x=element_blank(),
                          panel.grid.major.x=element_blank() ) +
      theme(legend.position="bottom") +
      scale_fill_manual(values= farb)
    

    The color scale farbhas to be in the same order as the facets. Produces this chart:

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