I have a dataframe that looks like this:
<code>structure(list(season = c("Fall", "Spring", "Summer", "Winter"
), effort = c(2559.85453311966, 4741.60449074074, 2014.4979040404,
3429.23108974359), TotalVariance = c(211426.863838282, 726394.792895483,
111303.839204525, 328799.605365902), STE = c(459.811770008426,
852.287975331979, 333.622300220661, 573.410503362035), stocked = c(7089,
17732, 0, 32902)), row.names = c(NA, -4L), class = "data.frame")
</code>
<code>structure(list(season = c("Fall", "Spring", "Summer", "Winter"
), effort = c(2559.85453311966, 4741.60449074074, 2014.4979040404,
3429.23108974359), TotalVariance = c(211426.863838282, 726394.792895483,
111303.839204525, 328799.605365902), STE = c(459.811770008426,
852.287975331979, 333.622300220661, 573.410503362035), stocked = c(7089,
17732, 0, 32902)), row.names = c(NA, -4L), class = "data.frame")
</code>
structure(list(season = c("Fall", "Spring", "Summer", "Winter"
), effort = c(2559.85453311966, 4741.60449074074, 2014.4979040404,
3429.23108974359), TotalVariance = c(211426.863838282, 726394.792895483,
111303.839204525, 328799.605365902), STE = c(459.811770008426,
852.287975331979, 333.622300220661, 573.410503362035), stocked = c(7089,
17732, 0, 32902)), row.names = c(NA, -4L), class = "data.frame")
I’m trying to plot these data using both a bar chart and a line graph but my legend is not using the right symbol for the line plotted:
<code>plot <- c("Stocking"="#000000","Effort"="#d11141")
df %>%
ggplot(aes(x = season)) + #Select data for plotting
geom_bar(aes(y = effort, fill = "Effort"),
stat = "identity", position = "dodge", color = "black") + #Plot as bar chart, select position and color
geom_errorbar(aes(ymin = effort-STE, ymax = effort+STE),
position = position_dodge(0.9), width = 0.3, size = 0.8) + #Plot error bars from data frame
geom_line(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 1.2) +
geom_point(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 5, shape = "diamond") +
scale_fill_manual(name="", values = plot) +
scale_color_manual(name ="", values = plot) +
scale_y_continuous(name = "Estimated Effort (h)", expand = c(0, 0),
sec.axis = sec_axis(trans = ~ .*coeff,
name = "Number of Fish Stocked")) + #Change y axis name and expand so bars touch y axis
scale_x_discrete(limit = c('Fall', 'Winter', 'Spring','Summer')) + #Order bars in order of seasons
xlab("Season") + #Change name of x axis
theme(legend.position = 'right', #Select legend position
legend.spacing.x = unit(1.0, 'cm'), #Select legend spacing value and units
panel.background = element_rect(fill='transparent'), #Set panel background to transparent for presentations
plot.background = element_rect(fill='transparent', color = "transparent"), #Set plot background to transparent for presentations
panel.grid.major = element_blank(), #Remove major gridlines
panel.grid.minor = element_blank()) #Remove minor gridlines
</code>
<code>plot <- c("Stocking"="#000000","Effort"="#d11141")
df %>%
ggplot(aes(x = season)) + #Select data for plotting
geom_bar(aes(y = effort, fill = "Effort"),
stat = "identity", position = "dodge", color = "black") + #Plot as bar chart, select position and color
geom_errorbar(aes(ymin = effort-STE, ymax = effort+STE),
position = position_dodge(0.9), width = 0.3, size = 0.8) + #Plot error bars from data frame
geom_line(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 1.2) +
geom_point(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 5, shape = "diamond") +
scale_fill_manual(name="", values = plot) +
scale_color_manual(name ="", values = plot) +
scale_y_continuous(name = "Estimated Effort (h)", expand = c(0, 0),
sec.axis = sec_axis(trans = ~ .*coeff,
name = "Number of Fish Stocked")) + #Change y axis name and expand so bars touch y axis
scale_x_discrete(limit = c('Fall', 'Winter', 'Spring','Summer')) + #Order bars in order of seasons
xlab("Season") + #Change name of x axis
theme(legend.position = 'right', #Select legend position
legend.spacing.x = unit(1.0, 'cm'), #Select legend spacing value and units
panel.background = element_rect(fill='transparent'), #Set panel background to transparent for presentations
plot.background = element_rect(fill='transparent', color = "transparent"), #Set plot background to transparent for presentations
panel.grid.major = element_blank(), #Remove major gridlines
panel.grid.minor = element_blank()) #Remove minor gridlines
</code>
plot <- c("Stocking"="#000000","Effort"="#d11141")
df %>%
ggplot(aes(x = season)) + #Select data for plotting
geom_bar(aes(y = effort, fill = "Effort"),
stat = "identity", position = "dodge", color = "black") + #Plot as bar chart, select position and color
geom_errorbar(aes(ymin = effort-STE, ymax = effort+STE),
position = position_dodge(0.9), width = 0.3, size = 0.8) + #Plot error bars from data frame
geom_line(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 1.2) +
geom_point(aes(y = stocked/ coeff, group = 1, color = "Stocking"), size = 5, shape = "diamond") +
scale_fill_manual(name="", values = plot) +
scale_color_manual(name ="", values = plot) +
scale_y_continuous(name = "Estimated Effort (h)", expand = c(0, 0),
sec.axis = sec_axis(trans = ~ .*coeff,
name = "Number of Fish Stocked")) + #Change y axis name and expand so bars touch y axis
scale_x_discrete(limit = c('Fall', 'Winter', 'Spring','Summer')) + #Order bars in order of seasons
xlab("Season") + #Change name of x axis
theme(legend.position = 'right', #Select legend position
legend.spacing.x = unit(1.0, 'cm'), #Select legend spacing value and units
panel.background = element_rect(fill='transparent'), #Set panel background to transparent for presentations
plot.background = element_rect(fill='transparent', color = "transparent"), #Set plot background to transparent for presentations
panel.grid.major = element_blank(), #Remove major gridlines
panel.grid.minor = element_blank()) #Remove minor gridlines
How can I make it so the the black square in the legend represented stocking reflects the black line and diamond I plotted. Thanks!