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_line1.png

引数に何も取らずにgeom_point()を使うと, 上のようなグラフが描写されます.

次に, この1本の折れ線グラフをamというパラメータにしたがって2本に分けてみたいと思います.

> p + geom_line(aes(colour=factor(am)))
> ggsave("geom_line2.png")
Saving 7 x 7 in image
            
geom_line2.png

ここで, 一つ注意があります. 今回は, geom_lineaes内で, colouramパラメータを指定するときにamfactorで囲いました. これは, str(mtcars)でデータ構造を確認した時に, amnumというデータ型になっていたためです. この場合は, factorを付けないと, グラデーションで色分けされることになり, 以下のようになります.

> p + geom_line(aes(colour=am))
> ggsave("geom_line3.png")
Saving 7 x 7 in image
            
geom_line3.png

おそらく, 上のようなグラフを書きたいということは少ないと思いますので, 注意して下さい. しかし, 最初から, データ型がfactorになっている場合(irisSpeciesなど)でグラフを分けたい場合は, 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
            
geom_line4.png