Combined line & bar geoms: How to generate proper legend?

bar-chart, ggplot2, legend, linechart, r

Solution

It is not an elegant solution but at least it gives some result.

I added `aes(fill="d2")` in `geom_bar()` and removed `fill="red"`. Then I added separate scales for line and for bars. Then in `theme()` I removed grey background from legend entry.

To ensure that d1 in legend is shown before d2 in `scale_colour_manual(" ")` there should be extra space between quotes ("longer" name).

To keep legend keys in one line, `legend.box="horizontal"` added to `theme()`

  ggplot(df, aes(Date)) + 
    geom_bar(aes(y = d2,fill="d2"), stat="identity") +
    geom_line(aes(y = d1, group = 1, color = "d1")) +
    scale_colour_manual(" ", values=c("d1" = "blue", "d2" = "red"))+
    scale_fill_manual("",values="red")+
    theme(legend.key=element_blank(),
          legend.title=element_blank(),
          legend.box="horizontal")

Problem

The legend for `d2` looks fine; for `d1`, I would like to show just the hoizontal line against a white/transparent backgounnd. ``` df = data.frame( Date = c("2012-11-30", "2012-12-03", "2012-12-04"), d1 = c(9, 5, 11), d2 = c(4, 6, 3) ) ggplot(df, aes(Date)) + geom_bar(aes(y = d2, color = "d2"), stat="identity", fill = "red") + geom_line(aes(y = d1, group = 1, color = "d1")) + scale_colour_manual("", values=c("d1" = "blue", "d2" = "red")) ```

Original source