使用geom_smooth时是否可以绕过stat_smooth?

Is it possible to bypass stat_smooth when using geom_smooth?

我有一个数据集,我围绕它构建了以下图表:

该图是从本 post 底部包含的数据集提供的,并由以下 ggplot2 代码制成:

    ggFacetProfile <- ggplot(sub, aes(group = iMoYr))  + 
    geom_line(aes(x= iHrMi, y = trimAv)) + 
    facet_grid(off ~ iMoYr, scales = "free") +
    ggtitle("Typical Half Hourly Profiles") + 
    xlab("Time") + ylab("Energy (kWh)")

我在这里绘制 trimAv(有效平均值)超过 iHrMi(有效小时和分钟)的值。这是 iMoYr off 的一个方面(实际上是过程的开启和关闭,以及一年中的不同月份)。

数据 table 已经在标题 minEclmaxEcl 下计算出有效的平滑值范围。我希望能够使用 geom_smooth 在图形上将此数据表示为函数 geom_smooth 所形成的形状的边界,但是我一直无法找到一种方法来绕过调用 stat_smooth.

到目前为止我最接近的尝试是包括:

+ geom_smooth(aes(x= iHrMi, y = trimAv, ymin = minEcl, ymax = maxEcl))

然而,这被强制进行了黄土平滑,显然是由于数据的大小,看起来像这样:

是否可以提供 geom_smooth 特定的 pre-calculated 值,或者我是否试图以非常错误的方式使用 geom_smooth? ggplot2 中的其他 geom_ 参数如此适应似乎不协调table,这看起来如此僵化。

数据源的头部和尾部(一个数据table)包含在下面用于结构目的:

          iDate            off       trimAv   trimStD minEcl maxEcl   iMoYr iHrMi
   1: 2013-08 00:00     Production 136.52273 37.300389   76.4  218.4 2013-08 00:00
   2: 2013-08 00:30     Production 136.14091 36.117819   80.3  217.7 2013-08 00:30
   3: 2013-08 01:00     Production 133.92500 32.808662   76.9  213.3 2013-08 01:00
   4: 2013-08 01:30     Production 139.20476 37.929480   77.1  221.5 2013-08 01:30
   5: 2013-08 02:00     Production 137.82857 36.422042   74.9  221.0 2013-08 02:00
  ---                                                                             
1148: 2014-07 22:30 Non-Production  50.51250  3.025812   47.1   56.3 2014-07 22:30
1149: 2014-07 23:00 Non-Production  49.88571  2.066743   47.0   52.6 2014-07 23:00
1150: 2014-07 23:30 Non-Production  49.94286  2.318661   46.5   52.5 2014-07 23:30
1151: 2014-07 00:00 Non-Production  50.85714  2.860569   47.9   54.9 2014-07 00:00
1152: 2014-07 00:30 Non-Production  50.72857  4.181194   47.6   59.1 2014-07 00:30

如果我能以更好/更合适的形式包含源数据table,请在评论中告诉我。

也许您正在寻找 geom_ribbon

ggFacetProfile <- ggplot(sub, aes(group = iMoYr))  + 
  geom_line(aes(x= iHrMi, y = trimAv)) + 
  facet_grid(off ~ iMoYr, scales = "free") +
  ggtitle("Typical Half Hourly Profiles") + 
  xlab("Time") + ylab("Energy (kWh)") +
  geom_ribbon(aes( ymin = minEcl, ymax = maxEcl))