[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