5
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-04

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に投稿された内容を翻訳して大幅に改編したものです:

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7