Change part of the background in ggplot to a different color

Using the following d data frame:

day <- gl(8,1,24,labels=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg")) day <- factor(day, level=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg")) month<-gl(3,8,24,labels=c("Jan","Feb","Mar")) month<-factor(month,level=c("Jan","Feb","Mar")) snow<-gl(1,24,labels=c("Y")) snow<-factor(snow,levels=c("Y","N")) count <- c(4,5,6,8,3,4,9,5.57,2,4,3,7,1,9,3,4.14,7,9,6,3,1,2,8,5.14) d <- data.frame(day=day,count=count,month=month,snow=snow) 

The background color behind the graph is the same as the histogram:

 ggplot(data=d[d$day=="Avg",], aes(x=day , y=count, fill=month)) + geom_bar(position = "dodge", width = 1.2, stat="identity") + geom_text(aes(label=month, x=day, y=count), position=position_dodge(width=1.2), vjust=-.6, size=3) + geom_line(data=d[d$day!="Avg",], aes(x=day, y=count, group=month, colour=month)) + facet_wrap(~snow,ncol=1,scales="free") + scale_x_discrete(limits=levels(d$day)) 

Is it possible to change the background color in the area behind the histogram?

Graph without partial background color change enter image description here

+4
source share
1 answer

You can use geom_rect() to draw a rectangle under the rows and columns. For ymax and ymax use -Inf and Inf to fill the entire area, but with xmin and xmax you have to play to get the desired effect.

 ggplot(data=d[d$day=="Avg",], aes(x=day , y=count, fill=month)) + geom_rect(data=NULL,aes(xmin=0.25,xmax=7.25,ymin=-Inf,ymax=Inf), fill="lightgreen")+ geom_rect(data=NULL,aes(xmin=7.25,xmax=8.75,ymin=-Inf,ymax=Inf), fill="darkgreen")+ geom_bar(position = "dodge", width = 1.2, stat="identity") + geom_text(aes(label=month, x=day, y=count), position=position_dodge(width=1.2), vjust=-.6, size=3) + geom_line(data=d[d$day!="Avg",], aes(x=day, y=count, group=month, colour=month)) + facet_wrap(~snow,ncol=1,scales="free") + scale_x_discrete(limits=levels(d$day)) 

enter image description here

+9
source

Source: https://habr.com/ru/post/1480312/


All Articles