Эта дискуссия на GitHub выглядит так, как будто она занималась аналогичной проблемой.
Исправление, рекомендованное Хэдли, состояло в том, чтобы вызвать show.legend = NA
Я воспроизвел ваш сюжет, выполняя это (полный код ниже), и проблема исчезла:
ggplot(data = data.frame(x = c(-1, 6)), aes(x)) +
stat_function(fun = dnorm, n = 100, args = list(mean = 2, sd = 1), aes(linetype = "a")) +
stat_function(fun = dnorm, n = 100, args = list(mean = 3, sd = 1), aes(linetype = "b")) +
scale_linetype_manual("Density Function", values = c(1, 2)) +
labs(x = "Value", y = "Probability Density") +
geom_vline(aes(xintercept = 2, colour = "mean1"), show.legend = NA) +
geom_vline(aes(xintercept = 3, colour = "mean2"), show.legend = NA, linetype = 2) +
scale_colour_manual("Mean", values = c(mean1 = "#F8766D", mean2 = "#C77CFF"),
labels = c("Mean a", "Mean b")) +
ggtitle("Legend Help")