We can use geom_rect
for separating the backgrounds.
ggplot()+
geom_rect(aes(xmin = as.Date("2015-01-01"),
xmax = as.Date("2015-12-31"),
ymin = -Inf, ymax = Inf, fill = '2015'), alpha = .2)+
geom_rect(aes(xmin = as.Date("2014-01-01"),
xmax = as.Date("2014-12-31"),
ymin = -Inf, ymax = Inf, fill = '2014'), alpha = .2)+
geom_rect(aes(xmin = as.Date("2013-01-01"),
xmax = as.Date("2013-12-31"),
ymin = -Inf, ymax = Inf,fill = '2013'), alpha = .2)+
geom_line(data=subset(aapl.df, date < '2016-01-01'),
aes(x=date, y=AAPL.Close, group=1))+
scale_fill_brewer(palette = 'Dark2', name = 'Year')+
theme_bw()
A few posts were used in this solution: geom_rect and alpha and using geom_rect to add recessions.