6

我正在尝试创建一个图例,该图例将采用自定义标签和颜色,alphas 对应于带注释的图中突出显示的区域,而不是使用代码在图表中绘制的数据系列:

library(ggplot2)
data(economics)
p1 <- ggplot(data=economics, mapping=aes(x=date, y=unemploy)) +
  geom_line(size=1) +
  annotate("rect", xmin=as.Date('1970-01-01'), xmax=as.Date('1980-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="red") +
  annotate("rect", xmin=as.Date('1990-01-01'), xmax=as.Date('2000-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="green") +
p1

我想在其中添加一个带有“1970s”、“1990s”标签的图例,相应的颜色为红色和绿色,alpha 为 0.2,对应于注释元素。有没有办法做到这一点?

4

1 回答 1

12

最简单的方法是为应该注释的区域制作新的数据框。

df<-data.frame(xmin=as.Date(c('1970-01-01','1990-01-01')),
               xmax=as.Date(c('1980-01-01','2000-01-01')),
               ymin=c(-Inf,-Inf),
               ymax=c(Inf,Inf),
               years=c("1970s","1990s"))

然后使用geom_rect()这个新的数据框来添加这些区域。图例将自动生成。使用 scale_fill_manual() 您可以更改颜色。

ggplot(data=economics, mapping=aes(x=date, y=unemploy)) +
  geom_line(size=1)+
  geom_rect(data=df,aes(xmin=xmin,ymin=ymin,xmax=xmax,ymax=ymax,fill=years),
                    alpha=0.2,inherit.aes=FALSE)+
  scale_fill_manual(values=c("red","green"))

在此处输入图像描述

于 2013-08-24T14:38:19.450 回答