【问题标题】:ggplot2 and geom_density: How to remove baseline?ggplot2 和 geom_density:如何删除基线?
【发布时间】:2014-02-06 10:50:52
【问题描述】:

我正在使用ggplot,如此处所述

Smoothed density estimates

并在 R 控制台中输入

m <- ggplot(movies, aes(x = rating))
m + geom_density()

这可行,但是有什么方法可以消除 x 轴和密度图之间的连接(将密度图连接到 x 轴的垂直线)

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

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

    m + stat_density(geom="line")
    

    我最初的建议是使用geom_line 和适当的stat

    m + geom_line(stat="density")
    

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

    【讨论】:

    • stat_density 与适当的geom
    • 感谢您的来信!在答案中包含该选项。
    • 对我来说似乎没有给出与分组相同的输出。
    • 也可以确认stat_density(geom='line')不能用于分组,而geom_line(stat='density')可以
    • 对于分组,geom_line(stat="density") 产生正确的图片,因为stat_density(geom="line") 产生的密度没有两条密度线的曲线下面积相等。
    【解决方案2】:

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

    + geom_hline(yintercept=0, colour="white", size=1)
    

    这对我有用。

    【讨论】:

    • 缺点是绘图的背景可能是白色的,也可能不是白色的,这取决于轴设置等。
    【解决方案3】:

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

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

    不完全一样,但非常接近。

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      相关资源
      最近更新 更多