R
ggplot2逆引き

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

More than 1 year has passed since last update.

2016/04/12追記: ggplot2 v2.1.0にて動作を確認しました


Q

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

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


NG_example.R

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



A

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


OK_example.R

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)))

OK_example.R-1.png

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


参照

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