[R] Putting colours in ggplot facets

Ben Tupper btupper @end|ng |rom b|ge|ow@org
Tue Oct 26 04:40:20 CEST 2021


Whoopsie.  Misfired cut and paste - all 13 fingers are thumbs today.

That second one should be...

df <- dplyr::tibble(date,vari,geo,est) %>%
  dplyr::mutate(colr = paste(geo, est))

ggplot(df,aes(x=date,y=vari))+
  geom_rect(aes(fill=colr),
            xmin=-Inf,xmax=Inf,
            ymin=-Inf,ymax=Inf,alpha = 0.3)+
  scale_fill_manual(values=colr)+
  geom_bar(stat="identity")+
  facet_grid(est~geo)

On Mon, Oct 25, 2021 at 10:37 PM Ben Tupper <btupper using bigelow.org> wrote:
>
> Hi,
>
> I don't quite follow what you want to achieve - colored backgrounds
> for each panel?  You could RSeek.org for some ideas on how to fish the
> panels grobs out... https://rseek.org/?q=ggplot+facet+backgound+color
>
> https://rseek.org/?q=ggplot+facet+backgound+color
>
>
> I can get sort of close by skipping the use of table ct and instead
> filling the panels using your df table. But it doesn't color each
> panel instead it colors each geo group.
>
> ggplot(df,aes(x=date,y=vari))+
>   geom_rect(aes(fill=geo),
>             xmin=-Inf,xmax=Inf,
>             ymin=-Inf,ymax=Inf,alpha = 0.3)+
>   scale_fill_manual(values=colr)+
>   geom_bar(stat="identity")+
>   facet_grid(est~geo)
>
>
> You could add another column, composed of geo and est, and fill by that...
>
> df <- dplyr::tibble(date,vari,geo,est) %>%
>   dplyr::mutate(colr = paste(geo, est))
>
> ggplot(df,aes(x=date,y=vari))+
>   theme(panel.background = element_rect(fill = colr)) +
>   scale_fill_manual(values=colr)+
>   geom_bar(stat="identity")+
>   facet_grid(est~geo)
>
> But it makes for a long set of labels on the scale bar thingy.
>
> I hope that helps.
>
> Ben
>
>
> On Mon, Oct 25, 2021 at 9:08 PM <phil using philipsmith.ca> wrote:
> >
> > I am using ggplot2 and I want to use different colours for some facets.
> > Here is a reprex:
> >
> > library(tidyverse)
> > date <- as.numeric(c(2017,2017,2017,2017,2017,2017,2018,2018,
> >    2018,2018,2018,2018,2019,2019,2019,2019,2019,2019))
> > vari <- as.numeric(c(4.8,3.3,4.2,5.2,4.8,5.7,5.4,3.1,5.7,4.1,
> >    3.1,1.5,4.5,4.4,2.8,2.0,2.1,2.2))
> > geo <- as.factor(c("Canada","Canada","Nova Scotia",
> >    "Nova Scotia","Manitoba","Manitoba","Canada",
> >    "Canada","Nova Scotia","Nova Scotia","Manitoba",
> >    "Manitoba","Canada","Canada","Nova Scotia",
> >    "Nova Scotia","Manitoba","Manitoba"))
> > est <- as.factor(c("Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income","Wages and salaries",
> >    "Gross mixed income"))
> > df <- data.frame(date,vari,geo,est)
> > ct <- unique(df[,c('est','geo')])
> > colr=c("blue","forestgreen","red","lightblue",
> >    "brown","gold")
> > p0 <- ggplot(df,aes(x=date,y=vari))+
> >    geom_rect(data=ct,aes(fill=geo),
> >      xmin=-Inf,xmax=Inf,
> >      ymin=-Inf,ymax=Inf,alpha = 0.3)+
> >    scale_fill_manual(values=colr)+
> >    geom_bar(stat="identity")+
> >    facet_grid(est~geo)
> > p0
> >
> > I have tried several approaches and Googled for help, but to no avail. I
> > am getting the error message: Error: Aesthetics must be either length 1
> > or the same as the data (6): x and y
> >
> > Thanks for some help.
> >
> > Philip
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
>
>
> --
> Ben Tupper (he/him)
> Bigelow Laboratory for Ocean Science
> East Boothbay, Maine
> http://www.bigelow.org/
> https://eco.bigelow.org



-- 
Ben Tupper (he/him)
Bigelow Laboratory for Ocean Science
East Boothbay, Maine
http://www.bigelow.org/
https://eco.bigelow.org



More information about the R-help mailing list