Pythonのmatplotlibを使うと様々なグラフを作成することができます。
本記事では、棒グラフの作成方法について解説します。
記事内に記載しているプログラムは、Python3.6.8を使って動作確認をしています。
Pythonのmatplotlibを使った棒グラフの作成方法
棒グラフの作成方法について、以下の内容を解説します。
- matplotlibライブラリの準備
- シンプルな棒グラフの作成方法
- 棒グラフの幅を設定する方法
- 棒の色、枠線の色、太さを設定する方法
- 棒の位置を設定する方法
- 横軸ラベルを設定する方法
- グラフのタイトル、縦軸、横軸のタイトル、グリッドを設定する方法
- エラーバーを設定する方法
- ログスケールでの表示方法
- 棒グラフの上部に数値を表示する方法
- ハッチングを設定する方法
- 横棒グラフを表示する方法
- 複数の棒グラフを表示する方法
- 積み上げ棒グラフを作成する方法
- 凡例を表示する方法
matplotlibライブラリの準備
matplotlibは、NumFOCUSプロジェクトによって作成されているオープンソースのライブラリです。
グラフの他にもアニメーションなどの様々な視覚化するための機能が提供されています。
matplotlibライブラリを使うには、pipで事前にインストールしておきます。
pip install matplotlib
プログラム内で使用するには、以下のようにimportします。
import matplotlib.pyplot as plt
また、実行する環境に合わせて、以下のようにプログラムに追記します。
ターミナルなどのコマンドで実行する場合
作成したグラフをファイルに保存します。
以下のプログラム構成となります。
import matplotlib.pyplot as plt import matplotlib matplotlib.use('agg') # グラフの作成処理 plt.savefig("figure01.png") plt.clf() plt.close()
ターミナルなどのコマンドで実行する場合
先頭に「% matplotlib inline」を記述します。
% matplotlib inline import matplotlib.pyplot as plt # グラフの作成処理
シンプルな棒グラフの作成方法
棒グラフを作成する基本となるプログラムは以下のようになります。
(上記の実行環境に合わせたプログラムの部分は割愛しています)
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height)
上記のプログラムを実行して作成される棒グラフは以下のようになります。
グラフを作るbarメソッドには、以下の様々なパラメータを指定することができます。
引数 | 意味 |
---|---|
left(必須)
|
各棒の横軸の値
|
height(必須)
|
各棒の縦軸の値
|
width
|
棒の幅(デフォルト0.8)
|
bottom
|
棒の下側の余白(積み上げ棒グラフで利用)
|
color
|
棒の色
|
edgecolor
|
棒の枠の色
|
linewidth
|
棒の枠の太さ
|
tick_label
|
横軸のラベル
|
xerr
|
横軸方向のエラーバーを出力
|
yerr
|
縦軸方向のエラーバーを出力
|
ecolor
|
エラーバーの色
|
capsize
|
エラーバーの傘のサイズ
|
error_kw
|
エラーバーに渡すkwargsの辞書
|
align
|
棒の位置(デフォルトedge)
・edge:左端または下端
・center:中央
|
orientation
|
棒の向き
|
log
|
Trueを指定すると軸を対数スケールにする(デフォルトFalse)
|
棒グラフの幅を設定する方法
widthに1.0を指定すると隙間がなくなります。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height, width=1.0)
棒の色、枠線の色、太さを設定する方法
棒の色と枠線の色は16進数表記で指定します。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height, color="#00FF00", edgecolor="#FF0000", linewidth=3)
棒の位置を設定する方法
デフォルトはedgeで縦棒グラフの場合は左端、横棒グラフの場合は下端となります。
centerを指定すると、中央にすることができます。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height, align="center")
横軸ラベルを設定する方法
横軸の数に応じたリストをtick_labelに設定します。
left = [1, 2, 3] height = [100, 200, 300] label = ["one", "two", "three"] plt.bar(left, height, tick_label=label)
グラフのタイトル、縦軸、横軸のタイトル、グリッドを設定する方法
それぞれtitle、xlabel、ylabel、gridで設定します。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height) plt.title("Title sample") plt.xlabel("x axis sample") plt.ylabel("y axis sample") plt.grid(True)
エラーバーを設定する方法
棒グラフでは、データの誤差範囲をエラーバーとして表します。
データ分析では標準偏差などを誤差範囲として設定します。
matplotlibでは、xerrに横軸の範囲、yerrに縦軸の範囲を指定します。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height, xerr=0.5, yerr=50, ecolor="red", capsize=10)
ログスケールでの表示方法
縦軸を対数表示にするには、logにTrueを設定します。
left = [1, 2, 3] height = [100, 200, 300] plt.bar(left, height, log=True)
棒グラフの上部に数値を表示する方法
各棒の上部に値を表示するには、少し複雑な設定が必要になります。
left = [1, 2, 3] height = [100, 200, 300] graph = plt.bar(left, height) def autolabel(graph): for rect in graph: height = rect.get_height() plt.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3), textcoords="offset points", ha='center', va='bottom') autolabel(graph)
ハッチングを設定する方法
棒に対してハッチングを設定するには、hatchに指定可能な文字を設定します。
指定可能な文字は、[‘/’ | ‘\’ | ‘|’ | ‘-‘ | ‘+’ | ‘x’ | ‘o’ | ‘O’ | ‘.’ | ‘*’] になります。
left = [1, 2, 3] height = [100, 200, 300] graph = plt.bar(left, height, hatch="+")
横棒グラフを表示する方法
棒グラフを横で表示するには、barhを使います。
left = [1, 2, 3] height = [100, 200, 300] plt.barh(left, height)
複数の棒グラフを表示する方法
1つの横軸に対して、複数の棒グラフを表示するには、棒グラフの数に応じてbarを呼び出します。
横軸の幅を計算するために、numpyのarangeを使っています。
left = np.arange(3) height1 = [100, 200, 300] height2 = [200, 400, 600] plt.bar(left - 0.35/2, height1, width=0.35) plt.bar(left + 0.35/2, height2, width=0.35)
積み上げ棒グラフを作成する方法
積み上げ棒グラフを作成するには、bottomに積み上げの下側に表示するグラフを設定します。
left = [1, 2, 3] height1 = [100, 200, 300] height2 = [200, 400, 600] plt.bar(left, height1) plt.bar(left, height2, bottom=height1)
凡例を表示する方法
グラフの凡例を表示するには、各barのlabelに設定し、legendを呼び出します。
left = [1, 2, 3] height1 = [100, 200, 300] height2 = [200, 400, 600] plt.bar(left, height1, label="Num1") plt.bar(left, height2, bottom=height1, label="Num2") plt.legend()
まとめ
matplotlibを使った棒グラフの作成方法をまとめると以下となります。
- 棒グラフの作成はbarメソッドで作成する。
- barメソッドの引数や、pyplotの各メソッドに様々な値を設定することで、棒グラフを装飾することができる。
- 複数の棒グラフを扱うには、barメソッドを複数回呼び出す。
matplotlibライブラリは手軽にグラフを作ることが出来ますので、データの可視化をプログラムで行いたい場合にはぜひ使ってみてはいかがでしょうか。
今回は、Pythonのmatplotlibを使った棒グラフの作成方法について解説しました。
以上、参考になれば幸いです。
コメント