将ggplot中背景的部分更改为不同的颜色

ble*_*man 5 background r graph colors ggplot2

使用以下数据框d:

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)
Run Code Online (Sandbox Code Playgroud)

折线图背后的背景颜色与条形图相同:

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))
Run Code Online (Sandbox Code Playgroud)

是否可以更改条形图后面部分的背景颜色?

没有部分背景颜色变化的图形 在此输入图像描述

Did*_*rts 11

您可以使用geom_rect()在线条和条形下绘制矩形.对于yminymax使用-Inf和INF填满所有地区,但有xminxmax你应该发挥获得预期的效果.

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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 您应该在geom_rect()的末尾添加alpha = 0.2(或其他值)以使其透明 (3认同)