【问题标题】:ggplot: Fill small area under normal curve: remove "joining" areaggplot:填充正态曲线下的小区域:删除“加入”区域
【发布时间】:2018-10-20 08:16:35
【问题描述】:

我想填充曲线下的一小块区域。然而,带状几何图形加入了分布的两个“部分”。

library(tidyverse)
density(rnorm(1000, 0, 1)) %$%
  data.frame(x=x, y=y) %>%
  mutate(area = dplyr::between(x, 1.5, 2.6)) %>%
  ggplot() +
  geom_ribbon(aes(x = x, ymin = 0, ymax = y, fill = area))

我相信避免这种行为的方法之一是将分布分成三个不同的部分,并用相同的颜色填充这两个部分。但是,我正在寻找一种更整洁优雅的方式。

【问题讨论】:

    标签: r ggplot2 fill area


    【解决方案1】:

    问题在于红丝带在蓝色区域内插值的方式,其中没有红色值,因此直线被绘制到下一个红色点。您可以通过首先绘制整个功能区来解决此问题,不考虑 area,然后在顶部绘制子集:

    library(tidyverse)
    density(rnorm(1000, 0, 1)) %$%
        data.frame(x=x, y=y) %>%
        mutate(area = dplyr::between(x, 1.5, 2.6)) %>%
        ggplot(aes(x = x, ymin = 0, ymax = y)) +
        geom_ribbon(aes(fill = "Outside")) +
        geom_ribbon(aes(fill = "Inside"), data = function(df) df %>% filter(area))
    

    结果:

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 2020-07-02
      • 2018-11-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多