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

时间:2015-02-02 15:02:47

标签: r ggplot2

我有一个数据集,我已经构建了以下图: enter image description here

该图是从这篇文章底部的数据集中提供的,并且是由以下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(实际上是小时和分钟)。这是offiMoYr的一个方面(实际上是关闭的过程,以及一年中的不同月份)。

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

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

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

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

enter image description here

是否可以提供geom_smooth特定的预先计算的值,或者我是否尝试以非常错误的方式使用geom_smooth? ggplot2中的其他geom_参数是如此适应性似乎是不合适的,这看起来很僵硬。

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

          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

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

1 个答案:

答案 0 :(得分:1)

也许您正在寻找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))