Rで『身近な統計(’12)』 – 図表2-5 成績分布(グラフ)
図表2-4 度数分布表の続きです。
度数分布表から、テキストにあるようなグラフを描きます。
2行目
図表2-4 度数分布表で保存したデータを変数に読み込みます。
4行目
グラフを描く前の準備です。
par()で、グラフィックスパラメータを参照したり、変更したりすることができます。
par()での設定変更は、現在のグラフィックデバイスに永続的に影響を及ぼしますで、描き終わったら、元に戻した方が安全です。
後で復元できるよう、一端、適当な変数に保存します。
5行目
グラフを描く前の準備です。
par()を使って、グラフ全体に共通する設定を変更します。
- mar = c(5.1, 4.1, 1.1, 5.1)
プロット領域(グラフの棒や折れ線を描く領域)の作図領域に対する余白(軸のタイトルやラベルを記述する領域)を設定します。ベクトルの要素は順に、下、左、上、右の1行の幅を単位とした距離です。作図の領域やその構成などについては、ここやここあるいはここを参照して下さい。余白の広さは、実際に描画してみてから、調整しています。今回は、下の項目名を垂直にして、右側に第2軸を描くために、広くしています。 - tcl = 0.5
軸の目盛をグラフの内側に、0.5行分の長さで描きます。マイナスにすると外側です。 - las = 1
軸のラベル(目盛につく数字や項目名)を水平にします。
7行目〜9行目
度数を高さとした棒グラフを描きます。
barplot()は、高水準作図関数です。barplot(df$freq)だけで、棒グラフは描けますが、軸などが自動的に描かれてしまうので、調整しています。
- x <- barplot(df$freq,
barplot()は、棒グラフを描くだけでなく、それぞれの棒の中心位置(x座標)を返すので、それをxに代入して保存し、後で折れ線グラフを描くときに利用します。 - ylab = “人数”
y軸のタイトルを指定します。 - ylim = c(0, sum(df$freq))
y軸の範囲(下限、上限)をベクトルで指定します。 - xlab = “成績”
x軸のタイトルを指定します。 - names.arg = df$grade
x軸のラベルを成績の項目にします。
プロットするベクトルに名前が付いている場合には、このオプションを省略しても、names.argに名前が設定されます。
11行目
lines()で、折れ線を追加します。lines()は低水準作図関数です。
13行目〜15行目
axis()で、軸を描きます。
棒が1本を超えた場合のみ、x軸に目盛を入れるようにしています。
- side = 1
軸を描く位置を指定します。1〜4で時計回りに下、左、上、右です。 - at = (x[-len] + x[-1]) / 2
x軸の目盛 りを描く位置を指定します。各棒の間に目盛りを描くように、barplot()で得たxから、その位置を計算しています。 - labels = FALSE
x軸のラベルはbarplot()で描いたので、ここでは描きません。
17行目〜18行目
axis()で、第2軸(右側の軸)を描きます。
- side = 4
右側に軸を描きます。 - at = seq(0, sum(df$freq), length.out = 6)
目盛やラベル(項目名や数値)の位置を指定します。
0%〜100%まで、20%刻みで描こうとしているので、0%と100%を含めて、6個の目盛とラベルが必要になります。相対累積度数を使わずに、0〜度数合計までを分割しています。 - labels = paste0(seq(0, 100, 20), “%“))
0%〜100%まで、20%刻みで、目盛のラベルを作ります。
19行目
mtext()で、第2軸のタイトルを書きます。
- text = “累積比率”
書き込む文字列です。 - side = 4
グラフの右側です。 - line = 4
文字列を書き込む位置を、何行分かで指定します。グラフから4行分離れた位置に書きます。 - las = 3
文字列を垂直にします。
21行目
box()でプロット領域を囲います。
23行目
最期に、par(mar = save_mar) で、グラフィックスパラメータを復元します。