使用ggplot2,我制作以下密度图:
ggplot(iris) + geom_density(aes(x=Sepal.Width, colour=Species))
Run Code Online (Sandbox Code Playgroud)
颜色图例(对于每个Species值)显示为一个带有直线的框,但绘制的密度为一条线.有没有办法让图例只显示每个Species条目的彩色线条,而不是一个有一条线穿过它的框?
Did*_*rts 18
一种可能性是使用stat_density()
与geom="line"
.只有在这种情况下才会有上线.
ggplot(iris)+
stat_density(aes(x=Sepal.Width, colour=Species),
geom="line",position="identity")
Run Code Online (Sandbox Code Playgroud)
如果您还需要整个地区(所有行),那么你可以结合geom_density()
使用show_guide=FALSE
(删除图例)和stat_density()
比将增加的传说只是水平线.
ggplot(iris) +
geom_density(aes(x=Sepal.Width, colour=Species),show_guide=FALSE)+
stat_density(aes(x=Sepal.Width, colour=Species),
geom="line",position="identity")
Run Code Online (Sandbox Code Playgroud)
小智 7
show_guide
@liesb 在答案中使用的函数在 ggplot 3.0.0 下已弃用;它已更改为show.legend
:
ggplot(iris) +
geom_density(aes(x=Sepal.Width, colour=Species),show.legend=FALSE) +
stat_density(aes(x=Sepal.Width, colour=Species),
geom="line",position="identity", size = 0) +
guides(colour = guide_legend(override.aes=list(size=1)))
Run Code Online (Sandbox Code Playgroud)
小智 5
ggplot(iris) +
stat_density(aes(x=Sepal.Width, colour=Species),
geom="line",position="identity")
Run Code Online (Sandbox Code Playgroud)
会做你想要的。