ggplotで折れ線グラフを作る geom_line()の使い方
Rでggplotを使って折れ線グラフを作るときには, geom_line()という関数を使います. ここでは, いくつかの例を元に, その使い方を解説していきます.
geom_line()のaes()内で扱える引数
- x
- y
- alpha
- colour
- linetype
- size
geom_line()の使い方の流れ
ggplotを使うのが初めての方は, 良かったら「ggplotの使い方」を参考にしてください. このページでは, ggplotの関数の中でも, 特にgeom_line()関数の使い方の流れを説明していくつもりです.
では, まず一番シンプルな折れ線グラフを作成してみます. 使用するデータセットはmtcarsです.
> library(ggplot2) > str(mtcars) 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... $ disp: num 160 160 108 258 360 ... $ hp : num 110 110 93 110 175 105 245 62 95 123 ... $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec: num 16.5 17 18.6 19.4 17 ... $ vs : num 0 0 1 1 0 1 0 1 1 1 ... $ am : num 1 1 1 0 0 0 0 0 0 0 ... $ gear: num 4 4 4 3 3 3 3 4 4 4 ... $ carb: num 4 4 1 1 2 1 4 2 2 4 ... > p <- ggplot(mtcars, aes(x=mpg, y=qsec)) > p + geom_line() > ggsave("geom_line1.png") Saving 7 x 7 in image
引数に何も取らずにgeom_point()を使うと, 上のようなグラフが描写されます.
次に, この1本の折れ線グラフをamというパラメータにしたがって2本に分けてみたいと思います.
> p + geom_line(aes(colour=factor(am))) > ggsave("geom_line2.png") Saving 7 x 7 in image
ここで, 一つ注意があります. 今回は, geom_lineのaes内で, colourにamパラメータを指定するときにamをfactorで囲いました. これは, str(mtcars)でデータ構造を確認した時に, amがnumというデータ型になっていたためです. この場合は, factorを付けないと, グラデーションで色分けされることになり, 以下のようになります.
> p + geom_line(aes(colour=am)) > ggsave("geom_line3.png") Saving 7 x 7 in image
おそらく, 上のようなグラフを書きたいということは少ないと思いますので, 注意して下さい. しかし, 最初から, データ型がfactorになっている場合(irisのSpeciesなど)でグラフを分けたい場合は, factorで囲う必要はありません.
> str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
上の例では, 2個のグラフに分けましたが, もう少しパラメータの値の種類が多いもので分ければ, 多くののグラフに分けることができます. また, geom_point()などと組み合わせることで, 以下の様なグラフにすることもできます.
> p + geom_line(aes(colour=factor(gear))) + geom_point(aes(colour=factor(gear))) > ggsave("geom_line4.png") Saving 7 x 7 in image