matplotlibで棒グラフを描画する方法

今回はmatplotlibで棒グラフを生成する方法を見ていきましょう。棒グラフのことを英語でbarと言います。matplotlib.pyplotクラスには、barが用意されており、誰でも簡単に描画することができます。

今回は公式のドキュメントを参考に進めていきます。

参考 pyplot.barMatplotlib 1.5.1 documentation

時間がない方のためのbarの主要な引数まとめ

left (必須) 各棒のX軸上の数値
height (必須) 各棒の高さ
width 棒の太さ(デフォルト値: 0.8)
bottom 各棒の下側の余白(主に積み上げ棒グラフを出力するために使う)
color 棒の色
edgecolor 棒の枠線の色
linewidth 棒の枠線の太さ
tick_label X軸のラベルを指定
align 棒の位置を指定

– edge: 垂直方向=左端, 水平方向の場合=下端

– center: 中央を指定

log  Trueで対数メモリを出力
xerr X軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定
yerr Y軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定
ecolor エラーバーの色を値または配列で指定
capsize エラーバーの傘のサイズを指定

棒グラフ描画をpyplot.barでマスターする

基本的な棒グラフを描画する

まずは基本的な棒グラフの生成の方法を見ていきましょう。pyplot.bar()で棒グラフを作ることができます。引数には必須でX軸の各棒の値と、棒グラフの大きさ(Y軸)を指定する、left, heightを指定します。Jupyter Notebookをお使いの方は、1行目の%matplotlib inlineを入力してください。

>>> %matplotlib inline
>>> import numpy as np
>>> import matplotlib.pyplot as plt
 
>>> left = np.array([1, 2, 3, 4, 5])
>>> height = np.array([100, 200, 300, 400, 500])
>>> plt.bar(left, height)


棒グラフのデザインを変更する

ここからは棒グラフのデザインを変更する引数を解説していきます。

棒の太さを変更する

棒の太さはwidthで変更することができます。デフォルト値は0.8なので、棒グラフの間隔が少し空いています。1.0にすると棒グラフの間隔はなくなります。

>>> # インポート文や数値生成は割愛します
>>> plt.bar(left, height, width=1.0)


棒の色と枠線の太さを調整する

棒の色は引数でcolorを指定することで変更できます。枠線の太さはlinewidthで調整できます。linewidthを0にすると以下のように枠線を消すことができます。

>>> # インポート文や数値生成は割愛します
>>> plt.bar(left, height, color="orange", linewidth=0)


棒の枠線の色を調整する

linewidthで枠線をつけて、枠線の色も調整してみましょう。edgecolorで指定することができます。

>>> # インポート文や数値生成は割愛します
>>> plt.bar(left, height, color="orange", linewidth=3, edgecolor="red")


棒の位置を変更する

棒の位置をalignで変更することができます。edgeで端に寄せるかcenterで中央揃えにできます。

>>> # インポート文や数値生成は割愛します
>>> plt.bar(left, height, color="orange", linewidth=3, edgecolor="red", align="edge")


X軸のラベルに文字列を指定する

引数のtick_labelにラベル名を渡すことで指定できます。

>>> # インポート文や数値生成は割愛します
>>> label = ["China", "India", "Japan", "Canada", "Italia"]
>>> plt.bar(left, height, color="orange", linewidth=3, edgecolor="red", tick_label=label)


タイトルやラベル名を編集する

タイトルとX軸、Y軸のラベル名の付け方を見ていきましょう。grid()でグラフ内にグリッド線を付けることもできます。

>>> # インポート文や数値生成は割愛します
>>> plt.bar(left, height, color="orange", linewidth=3, edgecolor="red")
>>> plt.title("This is a TITLE!")
>>> plt.xlabel("x axis")
>>> plt.ylabel("y axis")
>>> plt.grid(True)


積み上げ棒グラフの作成をマスターする

基本的な積み上げ棒グラフを描画する

棒グラフに続いて、積み上げ棒グラフの描画方法を見ていきましょう。棒グラフを2つ作り、上に積み上げる棒グラフの引数にbottomを指定し、そこで下に配置する棒グラフを選択します。慣れると簡単なので、挑戦してみてください。

>>> %matplotlib inline
>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> left = np.array([1, 2, 3, 4, 5])
>>> height1 = np.array([100, 200, 300, 400, 500])
>>> height2 = np.array([1000, 800, 600, 400, 200])

>>> # 下に来る棒グラフを作成する
>>> plt.bar(left, height1, color="lightblue")

>>> # 上に積み上げる棒グラフを作成する
>>> plt.bar(left, height2, bottom=height1, color="orange")


積み上げ棒グラフに凡例を表示する

凡例を表示するには、棒グラフを作成した後に、変数に入れてplt.legend()関数で簡単に作成できます。

>>> %matplotlib inline
>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> left = np.array([1, 2, 3, 4, 5])
>>> height1 = np.array([100, 200, 300, 400, 500])
>>> height2 = np.array([1000, 800, 600, 400, 200])

>>> # 下に来る棒グラフを作成する
>>> bar1 = plt.bar(left, height1, color="lightblue")

>>> # 上に積み上げる棒グラフを作成する
>>> bar2 = plt.bar(left, height2, bottom=height1, color="orange")

>>> plt.legend((bar1[0], bar2[0]), ("bar1 Graph", "bar2 Graph"))


まとめ

matplotlibのbarを用いて、棒グラフと積み上げ棒グラフの描き方を解説してきました。最後にこの記事のまとめを書いておきます。

覚えておきたいポイント
  • plt.bar()で描画できる
  • 色、枠線の太さ、枠線の色などのデザイン変更が可能
  • 棒グラフの位置も変更可能
  • plt.title()でグラフにタイトルをつける
  • plt.grid()でグリッド線をつける
  • plt.bottom()で積み上げ棒を作成
  • plt.legendで凡例を表示