无法为ggplot2中的几个密度图创建图例

时间:2013-10-03 16:19:28

标签: r ggplot2

我正在使用ggplot2来制作一些带有图例的密度图,但我无法在最终结果中添加图例。

m <- ggplot(chickwts, aes(x = weight))
m + geom_density(kernel = "gaussian", adjust = .3, colour="green", size=1)+
  geom_density(kernel = "gaussian", adjust = 1, colour="red", size=1)+
  geom_density(kernel = "gaussian",adjust = 5, colour="blue", size=1)+
  geom_density(kernel = "gaussian",adjust = 10, colour="yellow", size=1)+
  geom_density(kernel = "gaussian",adjust = 20, colour="orange", size=1)

我使用了几种语法,我在这里找到但没有一种方法不起作用。 谢谢。

1 个答案:

答案 0 :(得分:1)

ggplot2将其传说基于美学或传递给aes()函数的参数。通常,您会将一个因子指定为颜色美学,这将自动创建颜色图例。但是,chickwts数据集中没有内置的密度分组因子,因此您必须自己构建比例和标签。

您可以定义一个与您在geom_density()中创建的自定义色阶相对应的命名色彩美学,而不是直接在scale_colour_manual()中定义颜色,如下所示:

m <- ggplot(chickwts, aes(x = weight))
m + geom_density(kernel = "gaussian", adjust = .3, aes(colour=".3"), size=1)+
  geom_density(kernel = "gaussian", adjust = 1, aes(colour="1"), size=1)+
  geom_density(kernel = "gaussian",adjust = 5, aes(colour="5"), size=1)+
  geom_density(kernel = "gaussian",adjust = 10, aes(colour="10"), size=1)+
  geom_density(kernel = "gaussian",adjust = 20, aes(colour="20"), size=1) + 
  scale_colour_manual(values=c(".3"="green", "1"="red", "5"="blue", "10"="yellow", "20"="orange"), name="Densities")

Density plot example