Is it possible to have two legends with ggplot2, but based on different data sets? For example, in the code below, I would like to receive both the legend of the first situation and the legend of the second situation in the same chart. My attempt (third situation) does not work.
library(ggplot2) library(scales) yrng <- range(economics$unemploy) xrng <- range(economics$date) presidential <- presidential[-(1:3), ] # add a fictive factor to the economics dataset economics <- cbind.data.frame(economics, col=gl(2, nrow(economics)/2)) ##################### ## first situation ## ##################### # first plot with legend unemp <- qplot(date, unemploy, data=economics, geom="line", xlab = "", ylab = "No. unemployed (1000s)", colour=col) # second plot without legend unemp + geom_vline(aes(xintercept = start), data = presidential) ###################### ## second situation ## ###################### # first plot without legend unemp <- qplot(date, unemploy, data=economics, geom="line", xlab = "", ylab = "No. unemployed (1000s)") # second plot with legend unemp + geom_rect(aes(NULL, NULL, xmin = start, xmax = end, fill = party), ymin = yrng[1], ymax = yrng[2], data = presidential) + scale_fill_manual(values = alpha(c("blue", "red"), 0.2)) ##################### ## third situation ## ##################### # first plot with legend unemp <- qplot(date, unemploy, data=economics, geom="line", xlab = "", ylab = "No. unemployed (1000s)", colour=col) # second plot with legend unemp + geom_rect(aes(NULL, NULL, xmin = start, xmax = end, fill = party), ymin = yrng[1], ymax = yrng[2], data = presidential) + scale_fill_manual(values = alpha(c("blue", "red"), 0.2)) Error in data.frame(xmin = 11342, xmax = 14264, fill = "Republican", colour = function (x, : arguments imply differing number of rows: 1, 0