R 缩放 y 轴以适应黄土曲线

R to scale the y-axis to fit the loess curves

我想根据ggplot2的loess函数缩小Y轴的比例,即使这意味着一些原始点不会显示。

问题是我事先不知道黄土函数的最大值是多少。我所拥有的只是各种原始数据集,有时其中一些数据集偶尔会出现高峰,因此它们将我所有的黄土曲线挤压到图表的底部,而我更关心黄土的显示曲线比显示原始数据(但必须显示这些原始数据,至少是那些靠近黄土曲线的数据)

在这个例子中,蓝色黄土线永远不会高于2,而2和3之间有很多点;所以通常情况下,我希望 Y 轴的顶部为 2 并放弃那些极端的原始点。

library(ggplot2)
set.seed(34)
n <- 200
X <- runif(n)*8
Y <- sin(3*X) + cos(X^2) + rnorm(n, 0, 0.5)

myData <- data.frame(X,Y)
fit <- loess(Y~X,data=myData)
myData$pred <- predict(fit)

ggplot(myData, aes(X,Y))+
  geom_point()+
  stat_smooth(method="loess", se=F, size=3)+
  geom_line(aes(X,pred),colour="yellow")

你快到了,只需添加一个 coord_cartesian 电话

ggplot(myData, aes(X,Y))+
  geom_point()+
  stat_smooth(method="loess", se=F, size=3)+
  geom_line(aes(X,pred),colour="yellow") + 
  coord_cartesian(ylim=c(min(myData$pred)-.1, max(myData$pred)+.1))