Q: 11 ggplot2でspline()関数を使って曲線を描きたい

11.1 Q

私の持っているデータで、spline(y~x)というようにspline関数を使って曲線を描きたいのですが、lm(y~ns(x), df=_)といったスムージングを使う方法しか見つけられません。

どうしてもspline()を使いたいのですが、ggplotでspline()を使うシンプルな方法はありますか。以下のような方法を考えたのですが、できればこういうテクニックに頼りたくありません:

geom_smooth(aes(x=(spline(y~x)$x, y=spline(y~x)$y))

11.2 A

以下の方法を試してみてください:

library(ggplot2)
n <- 10
d <- data.frame(x = 1:n, y = rnorm(n))
ggplot(d,aes(x,y)) + geom_point() + 
  geom_line(data=data.frame(spline(d, n=n*10)))

まず実際のデータをgeom_point()でプロットしておき、スプライン曲線はgeom_line()で引きます。このとき、この曲線で使用するデータとして、spline()で処理したデータフレームを指定すればOKです。

11.3 参照

この記事は、以下のStack Overflowに投稿された内容を翻訳して大幅に改編したものです: