【Python】Matplotlibで棒グラフを書いてみる

matplotlib_棒グラフ

本記事では、Pythonでグラフを描画するためのモジュール「Matplotlib」で棒グラフを書いてみます。

前提として、pipでmatplotlibをインストールしているものとします。

標準的な棒グラフ

import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフを定義

x = ['A', 'B', 'C', 'D', 'E'] #x軸用のラベル
y = [10, 25, 17, 9, 20] #y軸用のデータ
ax.bar(x, y) #プロット

plt.show() #グラフを表示

上のコードを実行すると、次のようなグラフが描画されます。

matplotlib_棒グラフ
matplotlibの棒グラフ

棒グラフの色や形を変えてみる

import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフを定義

x = ['A', 'B', 'C', 'D', 'E'] #x軸用のラベル
y = [10, 25, 17, 9, 20] #y軸用のデータ
ax.bar(x, y, color='red', width=0.2) #オプションで色や幅を変更できる

plt.show() #グラフを表示

こちらのコードで、次のグラフが描画されます。

棒グラフの色と幅を変更
グラフの色や幅を変える

先ほどと変えたのは、ax.bar()に渡す引数だけです。color=’red’とwidth=’0.2’を渡すことで、色と幅が変わりました。

積み上げ棒グラフを描画

import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフを定義

x = ['A', 'B', 'C', 'D', 'E'] #x軸用のラベル
y = [10, 25, 17, 9, 20] #y軸用のデータ
y2 = [5,8,10,20,7] #積み重ねるデータ

ax.bar(x, y, color='red') #オプションで色や幅を変更できる
ax.bar(x,y2,color='blue', bottom=y) #bottom=yでyのデータの上に積み重ねられる

plt.show() #グラフを表示

積み重ねるデータとしてy2を作り、yと同じように、プロットします。この時、bottom=yという引数を渡すことで、yのデータの上に積み重ねることができます。

matplotlib_積み重ね棒グラフ
積み重ね棒グラフ

グループの棒グラフを描画

import matplotlib.pyplot as plt #モジュールのインポート
import numpy as np #numpyのインポート

Figure, ax = plt.subplots() #グラフを定義

label = ['A', 'B', 'C', 'D', 'E'] #x軸用のラベル
y = [10, 25, 17, 9, 20] #y軸用のデータ
y2 = [5,8,10,20,7] #積み重ねるデータ

x = np.arange(len(label)) #numpyでラベルの数のアレイを作る
width = 0.35 #幅を変数に格納

ax.bar(x-width/2, y,  width,  color='red') #widthの半分の値を引くと、左側に
ax.bar(x+width/2, y2,  width,  color='blue') #widthの半分の値を足すと、右側に

ax.set_xticks(x) #ラベルの数を指定、アレイを渡す
ax.set_xticklabels(label) #ラベルの表示を変更

plt.show() #グラフを表示

このコードにより、生成される棒グラフは次の通りです。

matplotlib_grouped_barchart
グループ化された棒グラフ

ちょっと、難しいですが、ポイントはnumpyを使うことです。numpyは、行列(アレイ)を作るモジュールです。
例えば、あるアレイから5を引くと、アレイの中の全ての値から5が引かれます。

np.arange(5)
#array[0,1,2,3,4]
np.arange(5)-5
#aray[-5,-4,-3,-2,-1]

ax.bar()のx軸として、幅の半分の値を引くことで、左にシフトします。また、足すことで、右にシフトします。

Appendix

関連記事:x軸、y軸の範囲を変更
関連記事:複数のグラフをまとめて描画
関連記事:グラフを保存する
関連記事:折れ線グラフを描画

参考書籍:「Pythonによるデータ分析入門 第2版