本記事では、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() #グラフを表示
上のコードを実行すると、次のようなグラフが描画されます。
棒グラフの色や形を変えてみる
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のデータの上に積み重ねることができます。
グループの棒グラフを描画
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() #グラフを表示
このコードにより、生成される棒グラフは次の通りです。
ちょっと、難しいですが、ポイントは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版」