図表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) で、グラフィックスパラメータを復元します。