変数が1つの場合
グラフにはいろいろな描き方があります。plot関数について、いろいろと試してみます。さまざまな散布図が描けます。折れ線グラフを描くこともできますが、折れ線グラフについては、matplot関数も便利です。
データフレームの作成
データフレームは、変数の数に応じて用意します。変数が3つある場合は以下です。
df3 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10),"C"=c(4,5,6,4,3,2))
df3
A B C
1 2 2 4
2 8 3 5
3 4 6 6
4 4 5 4
5 2 7 3
6 7 10 2
plot関数の基本
plot関数の引数として代表的なものは以下です。
plot(x=横軸のデータ,y=縦軸のデータ)
x=,y=は省略できるので、データフレーム名を入れればグラフを描いてくれます。
変数が一つだけのデータフレームを作って、plot関数を使うと下記のようなグラフになります。データがある場所にマークがあります。頻度は関係ないようで、ヒストグラムではありません。
df1 <- data.frame("A"=c(2,8,4,4,2,7))
plot(df1)
変数が2つ以上のデータフレームから、データを1つ選んでplot関数を使うと、x軸がインデックスのグラフになります。
df2 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10))
plot(df2[,1])
type=”l”(小文字のエル)を付けて、点をつなげば折れ線グラフになります。
df2 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10))
plot(df2[,1],type="l")
変数が2つの場合
変数が2つの場合は、2つの変数の散布図になります。x、yをそれぞれ指定する形でも、データフレームに2つ分のデータを指定する場合でも同じグラフが描けます。
df2 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10))
plot(df2[,1],df2[,2])
2つの変数が入っているデータフレームを指定した場合
df2 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10))
plot(df2)
x軸に年や月などの時間を指定して、type=”l”を使えば、時系列のグラフも描けます。Aの値を年にした例です。しかし、2つ以上の系列を示すのは難しそうです。
df2 <- data.frame("A"=c(2015,2016,2017,2018,2019,2020),"B"=c(2,3,6,5,7,10))
plot(df2,type="l")
データAが年ラベルの場合
変数が3つ以上の場合
df3 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10),"C"=c(4,5,6,4,3,2))
plot(df3)
変数が3つ以上の場合は、すべての組み合わせについて、散布図を描きます。
データフレームの変数が3以上の場合
折れ線グラフはmatplot関数
折れ線グラフを描くには、matplot関数が便利です。
df3 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10),"C"=c(4,5,6,4,3,2))
matplot(df3)
データフレームだけ指定した場合
データフレームだけを指定すると、点がプロットされるだけなので、type=”l”(小文字のエル)を加えます。
df3 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10),"C"=c(4,5,6,4,3,2))
matplot(df3,type="l")
matplot関数をさらに詳しく解説した以下も参照して下さい。
x軸にラベルにつけるのはちょっと面倒
matplot関数は、データを指定するだけで折れ線グラフを描いてくれるので便利です。しかし、x軸がインデックス(1から順番についた番号)だとわかりにくい場合があります。そこで、行に名前をつけて、それを表示することにします。rawnamesで行に名前を付けることができます。
df3 <- data.frame("A"=c(2,8,4,4,2,7),"B"=c(2,3,6,5,7,10),"C"=c(4,5,6,4,3,2))
> rownames(df3) <- c("2015", "2016", "2017","2018","2019","2020")
> df3
A B C
2015 2 2 4
2016 8 3 5
2017 4 6 6
2018 4 5 4
2019 2 7 3
2020 7 10 2
行の名前をx軸に表示するには、まず軸のないグラフを描いて、axis関数でx軸、y軸を描き加えます。x軸が1,y軸が2、1から6までの要素について名前を付けるという指示です。
matplot(df3,axes=FALSE,type="l")
axis(1,1:6,rownames(df3))
axis(2)