この記事では、Rでの折れ線グラフの書き方を紹介します。ggplotを使った作成方法を様々な具体例とカスタマイズ方法とともに紹介します。
イメージ
まずは折れ線グラフの作り方を図で紹介します。折れ線グラフは ggplot + geom_line で作成できます。ggplotの中でどのデータフレームを使うか指定し、 geom_line で x軸やy軸を指定します。これが基本の使い方です。
折れ線グラフは geom_line()で作成
具体例
ここからは実際に具体例を紹介していきたいと思います。
基本の折れ線グラフ
まずは基本の折れ線グラフの作り方です。今回は適当なデータセットを作成して折れ線グラフを作ってみます。下にコードとコードの結果作成されるグラフを表示します。
# Package library(ggplot2) # 作図用のパッケージで読み込みが必要 # Dataset作成 data <- data.frame( x = 1:6, # x軸用のデータ(1から6) y = c(15, 25, 10, 30, 20, 40) # y軸用の適当な数字を列挙 ) # 作図 ggplot(data = data) + # データの指定 geom_line(aes(x = x, y = y)) # 軸の指定
複数の線を描く
複数のデータを比べる時には複数の線を重ねて描きます。複数の線を描くときはグループの情報を用意しておく必要があります。グループ情報を用意しておくことでグループごとに分けて線を描くことができます。
library(ggplot2) data <- data.frame( g = rep(c("A", "B"), each = 6), # グループ情報(Aを6回、Bを6回繰り返す) x = rep(1:6, 2), y = c(15, 25, 10, 30, 20, 40, 30, 45, 20, 25, 40, 30) ) # 作図 ggplot(data = data) + geom_line(aes(x = x, y = y, group = g)) # group = でグループ情報を追加
複数の線を描くときは geom_line の中でグループ情報を指定する
ちなみにカスタマイズを全くしないで作図すると味気ないのでグループごとに色を分ける時は下のようなコードになります。
library(ggplot2) data <- data.frame( g = rep(c("A", "B"), each = 6), x = rep(1:6, 2), y = c(15, 25, 10, 30, 20, 40, 30, 45, 20, 25, 40, 30) ) # 作図 ggplot(data = data) + geom_line(aes(x = x, y = y, group = g, color = g)) # color = g で色分けも追加で指定
色分けをするときは グループ情報に加えて color = で色を塗り分ける
2軸の折れ線グラフ
y軸があまりに離れている、もしくはy軸の単位が違う場合は2種類の軸を用意して作図します。2軸の折れ線グラフを作るときは、第2軸目の値を第1軸目の値のスケールに合わせて補正しておいて、後から第2軸の軸設定をおこなう際に補正した計算の逆の計算を実施します。
具体例としておよそ10倍のスケールの値を第2軸として表現する場合を紹介します。まず geom_line の中では 第1軸のスケールに合わせるために10で割って10分の1のスケールに補正します。その後 scale_y_continuous で第2軸として第1軸の10倍のスケールの軸を作成します。
library(ggplot2) scale = 10 data <- data.frame( x = rep(1:6, 2), y1 = c(15, 25, 10, 30, 20, 40), y2 = c(140, 200, 120, 380, 230, 110) ) # 作図 ggplot(data = data, aes(x = x)) + geom_line(aes(y = y1), color = "tomato") + # 第1軸の値 geom_line(aes(y = y2 / scale), color = "steelblue") + # 第2軸の値 scale_y_continuous( name = "First", # 第1軸の軸タイトル設定 sec.axis = sec_axis(~. * scale, name = "second") # 第2軸の設定 )
2軸プロットする時は第2軸のデータを第1軸に合わせてプロットして、第2軸を本来のスケールになるように作成する
点(ポインタ)も加える
点と点を繋げたような折れ線グラフにするなら散布図を重ねます。最初に折れ線グラフを作成し、その上から散布図を足します。
library(ggplot2) data <- data.frame( x = 1:6, y = c(15, 25, 10, 30, 20, 40) ) # 作図 ggplot(data = data, aes(x = x, y = y)) + geom_line() + geom_point()
点も加える時は geom_line に加えて geom_point を追加する
ちょっと見た目を整えると以下のような感じになります。散布図の大きさは少しデフォルトより大きくした方がよいのかもしれませんね。
library(ggplot2) data <- data.frame( x = 1:6, y = c(15, 25, 10, 30, 20, 40) ) # 作図 ggplot(data = data, aes(x = x, y = y)) + geom_line(size = 2) + geom_point(color = "black", size = 10, shape = 21, fill = "gray50") + # 形や大きさ、色などを変更する theme_bw() # テーマをシンプルなものに変更する
カスタマイズ
ここからはカスタマイズ方法を紹介します。
折れ線自体に設定できる項目
まずは geom_line()の中で設定できる項目について紹介します。設定できる項目は下の図の通りです。
設定項目
- x:x軸に使う列の列名を指定
- y:y軸に使う列の列名を指定
- alpha:線の透過性を指定(0〜1の数値を指定。0で完全透過、列名を指定することもできる)
- colour:線の色(色を塗り分ける基準となる列名を指定することも、単色の色を指定することもできる)
- group:線で繋げるグループの基準となる列(これを指定しないと全てを一筆書きにつなげてしまう)
- linetype:線の種類(数値で指定するか基準にしたい列名を指定。実線や点線など種類が選べる)
- size:太さ(数値で指定。大きい値ほど太くなる。列名を指定することもできる。)