[R] Putting colours in ggplot facets

phii m@iii@g oii phiiipsmith@c@ phii m@iii@g oii phiiipsmith@c@
Tue Oct 26 04:40:53 CEST 2021


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
> 
> 
> 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.



More information about the R-help mailing list