I am trying to add a legend for the secondary axis in the following code
library(ggplot2)
library(dplyr)
library(reshape2)
df = data.frame(period = seq(as.POSIXct("2017-01-01"),as.POSIXct("2017-12-01"), by = "month"),
b = c(100, 110, 105, 200, 210, 190, 180, 170, 165, 175, 140, 145),
c = c(120, 130, 150, 170, 250, 160, 130, 120, 110, 130, 120, 170),
d = c(1060, 1180, 1050, 2070, 2150, 1900, 1850, 1070, 1605, 1750, 1460, 1250)) %>%
mutate(period = factor(period))
df_bar = melt(df, id.vars = "period", measure.vars = c("b", "c", "d")) %>% filter(variable != "d")
df_line = df %>% select(period, d)
ggplot(data = df_bar, aes(x = period, y = value, fill = variable)) +
geom_bar(stat = "identity", position = "dodge") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
theme(axis.text=element_text(size=9),
axis.title=element_text(size=14,face="bold")) +
ylab("primary axis") +
geom_line(data = df_line, aes(x = period, y = (d)/10, group = 1), inherit.aes = FALSE) +
geom_point(data = df_line, aes(x = period, y = (d)/10, group = 1), inherit.aes = FALSE) +
scale_y_continuous(sec.axis = sec_axis(~.*10, name = "secondary axis"))
I would like to have a legend for the line graph as well.
You can add
linetype
insideaes
in yourgeom_line
call to create a separate legend for the line then move its legend closer tofill
legendSee also this answer
To get both the point and line in the same legend, we can map
color
toaes
& usescale_color_manual
Created on 2018-07-21 by the reprex package (v0.2.0.9000).