wykres słupkowy i liniowy na jednym wykresie z legendą pod ggplot2

Chciałbym umieścić pasek i wykres liniowy dwóch oddzielnych, ale powiązanych ze sobą serii na tym samym wykresie z legendą (wykres słupkowy ma przyrost kwartalny, wykres liniowy ma roczny wzrost).

Obecnie robię to z ramką data.fr w szerokim formacie i takim kodem:

p <- ggplot() +
    geom_bar(df, aes(x=Date, y=quarterly), colour='blue') +
    geom_line(df, aes(x=Date, y=annual), colour='red')

ale nie mogę się dowiedzieć, jak dodać legendę, która ma czerwoną linię oznaczoną „Roczny wzrost”; i niebieski kwadrat oznaczony „Kwartalny wzrost”.

Alternatywnie, nie mogę wypracować, w jaki sposób mieć różne geomy dla różnych serii z długą formą data.frame.

AKTUALIZACJA:

Poniższy przykładowy kod daje mi część drogi do rozwiązania, ale z naprawdę brzydką duplikatem legendy. Ciągle szukam kompletnego rozwiązania ... To podejście opiera się na umieszczaniu danych w długiej formie, a następnie kreśleniu podzbiorów danych ...

library(ggplot2)
library(reshape)
library(plyr)
library(scales)

### --- make a fake data set
x <- rep(as.Date('2012-01-01'), 24) + (1:24)*30
ybar <- 1:24
yline <- ybar + 1

df <- data.frame(x=x, ybar=ybar, yline=yline)
molten <- melt(df, id.vars='x', measure.vars=c('ybar', 'yline'))
molten$line <- ifelse(molten$variable=='yline', TRUE, FALSE)
molten$bar <- ifelse(molten$variable=='ybar', TRUE, FALSE)

### --- subset the data set
df.line  <- subset(molten, line==TRUE)
df.bar   <- subset(molten, bar==TRUE)

### --- plot it
p <- ggplot() +
geom_bar(data=df.bar, mapping=aes(x=x, y=value, fill=variable, colour=variable),
    stat='identity', position='dodge') +
geom_line(data=df.line, mapping=aes(x=x, y=value, colour=variable)) +

opts(title="Test Plot", legend.position="right") 

ggsave(p, width=5, height=3, filename='plot.png', dpi=150)

I przykładowy wątek ...

questionAnswers(1)

yourAnswerToTheQuestion