我试图绘制一条线,用黄土平滑,但我试图弄清楚如何包括由现有变量定义的阴影误差区域,但也平滑。
此代码创建示例数据:
set.seed(12345)
data <- cbind(rep("A", 100), rnorm(100, 0, 1))
data <- rbind(data, cbind(rep("B", 100), rnorm(100, 5, 1)))
data <- rbind(data, cbind(rep("C", 100), rnorm(100, 10, 1)))
data <- rbind(data, cbind(rep("D", 100), rnorm(100, 15, 1)))
data <- cbind(rep(1:100, 4), data)
data <- data.frame(data)
names(data) <- c("num", "category", "value")
data$num <- as.numeric(data$num)
data$value <- as.numeric(data$value)
data$upper <- data$value+0.20
data$lower <- data$value-0.30
字符串
将下面的数据绘制出来,这就是我得到的:
ggplot(data, aes(x=num, y=value, colour=category)) +
stat_smooth(method="loess", se=F)
型
的数据
我想要的是一个类似于下面的图,除了阴影区域的上界和下界由生成的数据中的“上”和“下”变量的平滑线限定。
任何帮助将不胜感激。
1条答案
按热度按时间f3temu5u1#
这里有一种添加
upper
和lower
的平滑版本的方法。我们将upper
和lower
的LOESS预测添加到 Dataframe 中,然后使用geom_ribbon
绘制这些预测。如果这一切都可以在对ggplot
的调用中完成,那将更加优雅。这可能通过向stat_summary
提供专用函数来实现,希望其他人也会用这种方法来回答。字符串
结果是这样的:
的数据