我想在R中绘制一张平滑的图表(带有阴影边缘),其中X轴和Y轴包含“年龄”和“围度”变量,使用Orange数据即可。
ggplot2使用哪种平滑方法?
我尝试了以下代码,但出现了错误:
x <- Orange[2]
y <- Orange[3]
lo <- loess(y~x)
plot(x,y)
lines(predict(lo), col='red', lwd=2)
错误和警告:在模型框架中出现错误,公式为:y ~ x。变量 'y' 的类型无效(列表)。调用:loess -> eval -> eval -> -> model.frame.default 执行终止。
x
和y
变量是一列数据框,但你想将它们作为向量传递给loess
。所以尝试使用x<-Orange[[2]]; y<-Orange[[3]]
(注意双方括号)。此外,loess
有一个data
参数,因此您可以在公式中使用变量名称(第2和第3列),并添加data=Orange
。因此,对于您的示例,lo=loess(circumference~age,data=Orange); lines(lo$x[order(lo$x)],predict(lo)[order(lo$x)],col='red',lwd=2)
。 - user20650