I have written an answer here and would like to improve it.
What I would like to do is to remove the legend for geom_path
but it is not working with show.
I think what's going on is that because both variable
and direction
are mapped to color, the legend has four different color values. Removing the path legend just removes the arrows, while removing just the point legend removes the points. But either way, all four colors still show up in the legend, as points or arrows, respectively, because the underlying mapping still has four values, regardless of whether you choose to manifest those four values as points, arrows, or both in the legend.
One way around this would be to use a fill aesthetic for the points. Then the path legend will have only two values. To do this, you have to use a point style with a filled interior (pch values 21 - 25). You'll also need to change the colors of either the color aesthetic or fill aesthetic, so that they won't be the same:
ggplot(df, aes(x=question, y = value, group = question)) +
geom_point(size=4, aes(fill=variable), pch=21, color=NA) +
geom_path(aes(color = direction), arrow=arrow(), show.legend=FALSE) +
scale_fill_manual(values=hcl(c(105,285), 100, 50))