機械学習などの多くのデータを扱う際に避けては通れないデータビジュアライズですが、Pythonで行うにはどうすればいいのか。ということで、matplotlibというライブラリを用いてヒストグラムの描き方について解説していきます。

3次元で散布図を描きたい方はこちら

【matplotlib】Pythonでデータを可視化する(3D散布図編)

matplotlibとは

プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできる(Wiki参照)

ということで、2次元及び3次元のグラフをさくっとプロットできる非常にありがたいライブラリです。ちなみに、このロゴもmatplotlibで描いているものです。

ヒストグラムとは

基本的には横軸は階級,縦軸は度数(その階級に属するデータ数)を表したもの。分布の全体的な様子を見ることができるため、実際にデータの全体的な様子を把握したいときに利用するグラフの表現方法のひとつ。

基本ソース

今回は、ヒストグラムということでランダムな数値データが必要になるので、numpyで生成しています。

import matplotlib.pyplot as plt
x = np.random.nomal(75,5,2000)

plt.hist(x)
plt.show()

表示されるグラフがこのような感じです。

問題なくプロットされました。では、見た目をカスタマイズしていきます。

プロットの見た目をいじる

import matplotlib.pyplot as plt
x = np.random.nomal(75,5,2000)

plt.hist(x,bins=12,rwidth=0.8,label="test")
plt.legend()
plt.show()

histの()内のオプションを追加することで棒の全体の太さを変えて、棒自体の本数を増やしています。ヒストグラムに付けられる主要なカスタマイズキーワードを表形式でグラフの後に載せます。

次は目盛線を散布図とは違う方法でつけてみます。さらに、グラフタイトルとX軸Y軸のラベルを入れましょう。

Tips:主要なカスタマイズキーワード

主要と書いてます通り、今回もたくさんキーワードはあります。より細かい指定で様々なヒストグラムが描けますが、最低限これだけおさえてれいれば、普通のグラフは書けるかなという範囲のみ記載しておきます。

kywd 入力例 備考
x ヒストグラムとしてプロットしたい生データ array形式のもの
※必須
bins bins=5 表示する棒(ビンと呼ぶ)の数
color color=”r” または
color=”#FFFF00″ または
color=(1.0,0,1.0)
棒の色
色名や16進数、RGBでの指定が可能
normed normed=True Trueにすると合計値を1になるように正規化する
histtype histtype=”step” ヒストグラムのタイプ
barは通常
barstackedは積み上げ
stepは線
stepfilledは塗りつぶし線
orientation orientation=’horizontal’ 棒の配置方向
horizontalは水平
verticalは垂直
rwidth rwidth=0.5 棒の幅
bottom bottom=積み上げるデータ 積み上げ用データ
log log=True 対数目盛での表示
label label=”label1″ 凡例名

色については、リファレンスを見ると以下のものが用意されているみたいです。

color example code: named_colors.py — Matplotlib 2.0.2 documentation

3.グラフの見た目をいじる

import matplotlib.pyplot as plt
x = np.random.normal(75,5,2000)

plt.hist(x,bins=12,rwidth=0.8,label="test",log=True)
plt.legend()
plt.xlabel("X-label") #X軸ラベル
plt.ylabel("Y-label") #Y軸ラベル
plt.title("TEST GRAPH") #グラフタイトル
plt.show()

コメントを入れたところが見た目のカスタマイズを行った箇所になります。また、histの()内もほんの少し変更しています。実際のグラフが以下のものです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です