[R] Putting colours in ggplot facets
Paul Murrell
p@u| @end|ng |rom @t@t@@uck|@nd@@c@nz
Wed Oct 27 01:18:16 CEST 2021
Hi
Another alternative (using 'gggrid' to add a 'grid' rect grob as the
background), just for the record ...
library(gggrid)
bgrect <- function(data, coords) {
rectGrob(gp=gpar(col=NA, fill=adjustcolor(data$fill[1], alpha=.3)))
}
ggplot(df, aes(x=date, y=vari)) +
grid_panel(bgrect, aes(fill=geo)) +
scale_fill_manual(values=colr) +
geom_bar(stat="identity")+
facet_grid(est ~ geo)
Paul
On 26/10/2021 3:40 pm, phil using philipsmith.ca wrote:
> Thanks for the suggestions. As it happens, I just a moment ago found a
> solution. By adding the lines: ct$date <- 1 and ct$vari <- 1 everything
> works as I want it to.
>
> Philip
>
> On 2021-10-25 22:37, Ben Tupper 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>
> >
> > 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
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> >> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul using stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list