今日はグラフの一種であるヒストグラムについて解説致します。
「ヒストグラムって何?」
「pythonでどうやってヒストグラムを作るの?」
「pngファイルに出力とかできないかな…?」
といった疑問をお持ちの方へ向けて、
【基礎】ヒストグラムとは
【応用】pythonでヒストグラムを描く方法
【応用】ヒストグラムをpngファイルに出力する方法
を紹介致します。
これから初めてpythonでグラフ作成をしてみる方へ向けて書かせていただきましたので、スタートを切りたい方はぜひお付き合いください!
なお、本記事はヒストグラムについてのみ記載されています。
もし他のグラフが描きたいという方は、こちらの記事を参考にしてください。
それぞれのグラフを描く為の関数が簡潔に紹介されています。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
ヒストグラムとは
まずはじめにヒストグラムについてご存知でしょうか?
ヒストグラムとは、以下のような特徴を持ったグラフです。
- 横軸は階級
- 縦軸はデータの度数
- ある階級にどれだけデータが含まれているか
- 各階級に対するデータの度合いを四角い棒で表す
一言で表すと、「データの度数分布をグラフにしたもの」です。
言葉では少々わかりにくいので、実際のヒストグラムを見てみましょう。
こちらは40人に行ったテストの結果をヒストグラムにした図です。
こうすると平均点だけでは把握できない、理解度の差なども分かってきますよね。
このように、分布を把握するのに適しているグラフがヒストグラムです。
以降ではpythonでヒストグラムを描く方法について紹介していきます。
ヒストグラムを作成する為の準備
まずはじめに、pythonでヒストグラムを作成するのに必要な準備から始めましょう。
pythonでグラフを描画するには、matplotlibをインポートする必要があります。
matplotlibはグラフを描画するのに必要な機能をまとめたものです。
こちらは標準ライブラリには無い為、インストールしてくる必要があります。
以下のコマンドを実行し、matplotlibをインストールしましょう。
$ pip install matplotlib
これで準備は完了です。
もしpipでインストールをする方法について詳しくわからない方は、以下を参照してみてください。
pipとは何かという所から、pipの使い方までが紹介されています。
ヒストグラムの作り方
それでは、実際にヒストグラムを作成してみましょう!
実は先ほどの図ですが、これは実際にmatplotlibを使いpython上で作ったものです。
その際のコードをご確認ください。
import matplotlib.pyplot as plt x = [30, 36, 40, 44, 50, 58, 60, 61, 63, 65, 66, 68, 72, 75, 75, 78, 70, 80, 84, 90, 93, 32, 39, 41, 42, 51, 53, 61, 64, 66, 67, 68, 69, 73, 74, 78, 79, 80, 81, 90, 22, 84,] fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.hist(x, bins=10) ax.set_title('test histogram') ax.set_xlabel('Score') ax.set_ylabel('Num of Poeple') fig.show()
上記のようにして、ヒストグラムが作成されています。
ポイントは以下になります。
1. 先ほどインストールしたmatplotlibをインポートする
2. fig = plt.figure()の行で図を作成
3. ax = fig.add_subplot(1,1,1)でグラフの配置を指定
4. hist()でヒストグラムを作成する
1, 2はおまじない、2は単独のヒストグラムを作成するなら引数はadd_subplot(1,1,1)で問題ないと覚えましょう。
肝心のhist()では、得点のリストとbin(グラフの棒の数)を渡しています。
その他にも様々な値を渡すことができますので、以下で紹介致します。
hist()の引数について
hist()の引数は以下のようになっています。
matplotlib.pyplot.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, data=None, **kwargs)
なかなか多いですね。
以下の表に覚えておいていただきたい引数をまとめました。
「こんな引数があるんだ」程度にご確認ください。
引数 | 意味 | 備考 |
---|---|---|
x, y | データの配列 | 入力必須 複数指定可 |
bins | グラフの棒の数(=階級の数) | デフォルト値は10 |
range | binsの範囲(最大値・最小値)を指定できる | デフォルト値は(x.min(), x.max()) |
normed | 正規化をするかどうか指定できる | デフォルトはFalse |
histtype | ヒストグラムの種類を選択できる。 種類はbar(通常), barstacked(積み上げ), step(線), stepfilled(塗りつぶしありの線)がある | デフォルトはbar |
orientation | グラフの向きを”vertical”または”horizontal”で指定できる | デフォルトはvertical |
rwidth | 棒の幅を指定できる | デフォルトはNone(指定しない) |
log | 縦軸を対数の目盛りで表示するかどうか指定できる | デフォルトはFalse |
color | ヒストグラムの色を指定できる | デフォルトはNone(指定しない) |
label | 凡例を載せる事ができます | デフォルトはNone(凡例を載せない) |
ファイルに出力する方法
最後に作成したヒストグラムを外部ファイルに出力する方法を紹介します。
必要な手順は、以下のコードを最後の1行に追加するだけです。
plt.savefig('hoge.png')
savefigは図をファイルに出力する際に使う関数です。
引数はいくつかありますが、最低でもファイル名さえ指定していれば出力できます。
まとめ
いかがでしたでしょうか?
今回の記事では、
【基礎】ヒストグラムとは
【応用】pythonでヒストグラムを描く方法
【応用】ヒストグラムをpngファイルに出力する方法
について説明致しました。
pythonでヒストグラムを作成するというのは一見ハードルが高いように思われますが、実際はそこまで難しいことではありません。
ここで作成の基礎を学び、是非今後にお役立てください!