我用R中的ggplot绘制了向量的直方图和kde。现在,我想添加一个图例,其中包含三个kde图->“矩形”,“ epanechnikov”和“高斯”。我就是无法正常工作!
v1 = data.frame(x=rnorm(500,30,9))
ggplot(data=v1, aes(x=x)) +
geom_histogram(binwidth=2, color="grey", fill="white") +
geom_density(aes(y=2 * ..count..), kernel="rectangular", color="orange") +
geom_density(aes(y=2 * ..count..), kernel="epanechnikov", color="red") +
geom_density(aes(y=2 * ..count..), kernel="gaussian", color="blue") +
scale_color_manual(labels=c("rectangular", "epanechnikov","gaussian"),
values=c("orange"="orange", "red"="red", "blue"="blue"))
答案 0 :(得分:0)
您如此很亲密。根据{{3}}的建议:
ggplot(data=v1, aes(x=x)) +
geom_histogram(binwidth=2, color="grey", fill="white") +
geom_density(aes(y=2 * ..count.., color="rectangular"), kernel="rectangular") +
geom_density(aes(y=2 * ..count.., color="epanechnikov"), kernel="epanechnikov") +
geom_density(aes(y=2 * ..count.., color="gaussian"), kernel="gaussian") +
scale_color_manual(labels=c("rectangular", "epanechnikov","gaussian"),
values=c("rectangular"="orange", "epanechnikov"="red", "gaussian"="blue"))
https://stackoverflow.com/a/24497113
诀窍是将color
移到内部 aes(...)
,并在scale_color_manual
中进行匹配。我碰巧使用了与kernel=
相同的字符串,但这并不是绝对必要的。不过,无论您选择什么,都需要在values=
中匹配scale_color_manual
的名称。 (顺便说一句,labels=
在这里是可选的,除非您要美化某些字符串;否则,它将在每个color=
中使用aes()
。)