ggplot2和geom_density:如何删除基线?

use*_*326 39 plot r ggplot2

我正在使用ggplot这里描述的

http://docs.ggplot2.org/current/stat_density.html

并进入R控制台

m <- ggplot(movies, aes(x = rating))
m + geom_density()
Run Code Online (Sandbox Code Playgroud)

这有效,但有一些方法可以删除x轴和密度图之间的连接(将密度图连接到x轴的垂直线)

ton*_*nov 59

最一致的方法是(感谢@baptiste):

m + stat_density(geom="line")
Run Code Online (Sandbox Code Playgroud)

我最初的提议是使用geom_line适当的stat:

m + geom_line(stat="density")
Run Code Online (Sandbox Code Playgroud)

但是我不再推荐它,因为我收到的报告并不是普遍适用于新版ggplot中的每个案例.

  • 还可以确认`stat_density(geom ='line')`不适用于分组,而`geom_line(stat ='density')`很好 (5认同)
  • 对于分组,`geom_line(stat="密度")` 产生正确的图片,因为`stat_密度(geom="line")` 产生的密度在两条密度线的曲线下没有相等的面积。 (3认同)

Ben*_*rth 7

建议的答案不提供完全相同的结果geom_density.为什么不在基线上划一条白线?

+ geom_hline(yintercept=0, colour="white", size=1)
Run Code Online (Sandbox Code Playgroud)

这对我有用.

  • 缺点是绘图的背景可能是白色,也可能不是白色,具体取决于轴设置等。 (2认同)

Lau*_*riK 6

另一种方法是分别计算密度然后绘制。像这样:

a <- density(movies$rating)
b <- data.frame(a$x, a$y)
ggplot(b, aes(x=a.x, y=a.y)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

它不完全相同,但是非常接近。