Python 度数分布表をヒストグラムで表す

度数分布表のデータからヒストグラムを作成する

概要

Python ヒストグラムの見た目を教科書のようにする - 勉強ボックス管理者ブログ」の記事で「整理されていないデータ」からヒストグラムを作成する例を記載しましたが,本記事では度数分布表に整理したデータをヒストグラムに表すプログラムを考えてみます。

度数分布表

3年1組の4月の本の貸し出し数の記録

階級(冊) 度数(人)
0以上 ~ 2未満 4
2 ~ 4 6
4 ~ 6 7
6 ~ 8 2
8 ~ 10 1
20

棒グラフの作成

Pythonコード

import matplotlib.pyplot as plt

x = [0,2,4,6,8]
height = [4,6,7,2,1]
plt.bar(x, height)

plt.show()

・配列 x のデータが「階級」です。
・配列 height のデータが「度数」です。
・配列名は自由につけられますが,bar()に渡す引数の順番は bar(階級,度数)になります。

グラフ描画結果
 

ヒストグラムの見た目にするために,以下を直したいと思います。
・横軸の数字の位置を棒の端に合わせたい
・グラフの幅を階級の幅に合わせたい
・グラフの色を変えたい
・グラフに枠線を付けたい
・縦軸から横線を引きたい

見た目を整えたコード例

Pythonコード

import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "Yu Gothic"
plt.rcParams["axes.axisbelow"] = True

x = [0,2,4,6,8]
height = [4,6,7,2,1]
plt.bar(x, height, width=2, align="edge", color="lightskyblue", edgecolor="black")

plt.title("3年1組の4月の本の貸し出し数の記録")
plt.xlabel("階級(冊)")
plt.ylabel("度数(人)")

plt.grid(axis="y")
plt.show()

・タイトル等に日本語を表示できるようにする設定(Windows環境)
 plt.rcParams["font.family"] = "Yu Gothic"

・縦軸の横線をグラフの背後に表示する設定
 plt.rcParams["axes.axisbelow"] = True
  …
 plt.grid(axis="y")

・bar()の引数 width で棒グラフの幅の指定
 plt.bar(…, width=2, ...)
 ※ xの階級の幅 2 に合わせました。
 (もしも階級の幅が 5 のグラフなら width も 5 にすると目盛り間にそろいます)

・bar()の引数 align で棒グラフの位置を指定
 plt.bar(…, align="edge", ...)
 ※ align は center か edge が指定できます。(centerがデフォルトです)

・bar()の引数 color で棒グラフの色を指定
 plt.bar(…, align="lightskyblue", ...)

・bar()の引数 edgecolor で棒グラフの枠線色を指定
 plt.bar(…, edgecolor="black")


グラフ描画結果
 

度数分布表のデータをヒストグラムの見た目の棒グラフで表示することができました。