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"))
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")