我正在绘制一组带阴影的数据,以跟随下限和上限值。我使用stat_smooth
为Est
值应用了平滑,但我无法获得由UB和LB值指定的着色区域以跟随平滑线。这是数据:
Quantiles Est LB UB
0.10 -4.39 -4.80 -4.00
0.25 -3.46 -3.72 -3.22
0.50 -3.11 -3.29 -2.91
0.75 -2.89 -3.15 -2.60
0.90 -1.69 -2.21 -1.09
这是我的ggplot代码:
ggplot(data,aes(y=Est,x=Quantiles)) + stat_smooth() +
geom_ribbon(aes(ymin=LB,ymax=UB),alpha=0.2)
提前感谢您的帮助!
答案 0 :(得分:0)
我的理解是,您希望色带边界遵循平滑曲线,而不是简单地连接LB和UB点。在您的情况下,stat_smooth使用黄土方法计算平滑曲线。您没有足够的数据点来使用默认顺序2计算真实平滑的黄土曲线,因此黄土函数返回通过给定数据数据点的曲线,使用二次平滑曲线连接这些曲线,并在警告信息。忽略这些警告,获得平滑色带的一种方法是计算数据平滑点和色带边界,然后绘制结果,如下所示:
smooth <- data.frame(Quantiles= seq( min(data$Quantiles), max(data$Quantiles), length.out=100))
smooth$Est <- predict(loess(Est ~ Quantiles, data), newdata=smooth$Quantiles)
smooth$LB <- predict(loess(LB ~ Quantiles, data), newdata=smooth$Quantiles)
smooth$UB <- predict(loess(UB ~ Quantiles, data), newdata=smooth$Quantiles)
ggplot(data=smooth,aes(y=Est,x=Quantiles)) + geom_line() +
geom_ribbon(aes(ymin=LB,ymax=UB),alpha=0.2)