しぷぜん

しぷぜん

素人プログラマなおいがStep Zero to Oneしていくブログ

Pythonでデータを可視化するmatplotlib入門(ヒストグラム編)

にほんブログ村 IT技術ブログ Pythonへ

こんにちは、なおいです。

 matplotlibというライブラリでグラフを描いてきました。今回で恐らく終了です。またMatplotlibで何か書くかもしれません。そういえば3次元のも書いときたいな。前言撤回まだ続きそうです。

では、ヒストグラムを描いていきたいなと思います。最初のインストールやインポートについては 割愛しますので、最初の記事をご参照いただければ。。。

ct-innovation01.hateblo.jp

 

 

f:id:ct-innovation01:20170927160405p:plain

ヒストグラムのプロット

0.ヒストグラムとは

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

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

plt.hist(x)
plt.show()

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

 

f:id:ct-innovation01:20170930145245p:plain

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

 

2.プロットの見た目をいじる
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()

赤文字部を追加することで棒の全体の太さを変えて、棒自体の本数を増やしています。今回も例に漏れずヒストグラムに付けられる主要なカスタマイズキーワードは表形式でグラフの後に載せときます。

  

f:id:ct-innovation01:20170930150313p:plain

 

次は目盛線を散布図とは違う方法でつけてみます。さらに、グラフタイトルと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" 凡例名

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

f:id:ct-innovation01:20170927115343p:plain

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()

先ほど同様、赤文字部を追加することで見た目のカスタマイズを行いました。実際のグラフが以下のものです。

  

f:id:ct-innovation01:20170930153136p:plain