ggplot legend not working with scale_colour_manual

2020-03-24 13:16发布

问题:

I know an identical question has been asked earlier. ggplot legend - scale_colour_manual not working

But the question involves a somewhat complicated dataset than what I have here and the answer suggests restructuring data and then works with restructured data. But the problem persists even with simple data as I have below and I can't solve it. So please don't mark it as duplicate.

The problem: when using scale_colour_manual in ggplot2, the legend is not showing.

p <- data.frame(a = runif(10, 1, 2))
ggplot(data=p, aes(x=a)) +
  geom_histogram() +
  geom_vline(aes(xintercept=mean(p$a), colour="mea")) +
  geom_vline(aes(xintercept=median(p$a), colour="med")) +
  scale_colour_manual(name="Statistic",
                      values=c("med"= "red", "mea"="green"))

Any help is appreciated.

回答1:

You have to use show_guide=TRUE in geom_vline (defaults to FALSE):

p <- data.frame(a = runif(10, 1, 2))
ggplot(data=p, aes(x=a)) +
  geom_histogram() +
  geom_vline(aes(xintercept=mean(a), colour="mea"), show_guide=TRUE) +
  geom_vline(aes(xintercept=median(a), colour="med"), show_guide=TRUE) +
  scale_colour_manual(name="Statistic",
                      values=c("med"= "red", "mea"="green"))



标签: r ggplot2 legend