ggplot图例在使用scale_colour_manual时无法正常工作

7
我知道之前有一个完全相同的问题被问过。ggplot legend - scale_colour_manual not working。但是那个问题涉及到比我这里更加复杂的数据集,而且回答建议重新组织数据再处理。但即使像我下面这样简单的数据,问题仍然存在,我无法解决它。所以请不要认为这是重复的。问题在于:在使用ggplot2的scale_colour_manual时,图例未显示。
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"))

任何帮助都将不胜感激。

2
geom_vline 目前默认为 show_guide = FALSE,因此如果您想要一个图例,您需要更改该设置。 - aosmith
2个回答

7

在使用 geom_vline 时,你需要使用 show_guide=TRUE(默认为 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"))

plot


啊,谢谢!这么简单。我想知道为什么其他问题需要一个复杂的答案。 - Mr K
在编程中,使用mean(a)替代mean(p$a),并将其放置在aes()函数内。 - rcs

0

更新rcs的答案show_guide现已被弃用。您现在应该使用:show.legend = TRUE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接