我有一个数据集,我已经构建了以下图:
该图是从这篇文章底部的数据集中提供的,并且是由以下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
(实际上是小时和分钟)。这是off
到iMoYr
的一个方面(实际上是关闭的过程,以及一年中的不同月份)。
数据表已经在标题minEcl
和maxEcl
下方计算了有效的平滑值范围。我希望能够使用geom_smooth将图形上的数据表示为函数geom_smooth所形成的边界,但是我无法找到绕过调用stat_smooth的方法。
到目前为止,我最接近的尝试是包括:
+ geom_smooth(aes(x= iHrMi, y = trimAv, ymin = minEcl, ymax = maxEcl))
然而,这被强制进入黄土平滑,显然是由于数据的大小,看起来像这样:
是否可以提供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
如果我能以更好/更合适的形式提供源数据,请在评论中告诉我。
答案 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))