R 从用户定义的点绘制平滑图

R 从用户定义的点绘制平滑图,r,graph,R,Graph,我想画一个平滑的图形,只指定一些点。下图为一个示例: 我想提出以下几点: x <- c(7, 8, 9, 11, 12, 13, 16, 17, 18) y <- c(0.05, 0.95, 0.3, 0.3, 0.7, 0.3, 0.3, 0.95, 0.2) x对于10个数据点,您可以添加一个9阶多项式来获得类似的结果。通过使用ggplot2中的geom_smooth,可以通过以下方式将其直接拟合到数据中 x <- c(7, 8, 9, 11, 12, 13, 16,

我想画一个平滑的图形,只指定一些点。下图为一个示例:

我想提出以下几点:

x <- c(7, 8, 9, 11, 12, 13, 16, 17, 18)
y <- c(0.05, 0.95, 0.3, 0.3, 0.7, 0.3, 0.3, 0.95, 0.2)

x对于10个数据点,您可以添加一个9阶多项式来获得类似的结果。通过使用ggplot2中的
geom_smooth
,可以通过以下方式将其直接拟合到数据中

x <- c(7, 8, 9, 11, 12, 13, 16, 17, 18)
y <- c(0.05, 0.95, 0.3, 0.3, 0.7, 0.3, 0.3, 0.95, 0.2)

df <- data.frame(x,y)

library(ggplot2)
ggplot(df, aes(x,y)) + 
  geom_point() +
  stat_smooth(method="lm",
          formula=y ~ poly(x, 9, raw=TRUE),
          colour="red")

x这样做的一个好方法是使用样条函数。这不仅会给你曲线,而且会给你一个函数来估计任意x的y

SF = splinefun(x,y)
curve(SF, xlim=c(7,18))
points(x,y, pch=16, col="red")