[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