barメソッドによる棒グラフの描画
barメソッドを用いて棒グラフを描画する方法をまとめます。
グラフ表示するデータの準備
最初に以下のコードを実行し、表示させるグラフのデータを準備します。モジュールのインポートも一緒に実行しています。
import matplotlib.pyplot as plt import numpy as np x = np.arange(5) y = [1, 5, 2, 9, 10]
以下の例では、subplots関数を用いてグラフオブジェクトを生成しています。subplots関数を用いたグラフの描画については、以下の記事を参照してください。
barメソッドで棒グラフを描画
Axesオブジェクトに対してbarメソッドを実行することで、棒グラフを生成することができます。
xが各棒グラフの横軸の位置、yが棒グラフの高さになります。
例:
fig, ax = plt.subplots() ax.bar(x, y)
出力:

また、dataオプションを用いて辞書型やpandasのDataFrame型の様なデータを扱うこともできます。
例:
data = {"x":x, "y":y} fig, ax = plt.subplots() ax.bar("x", "y", data=data)
出力:

色の設定
colorオプションを用いて、棒グラフを塗りつぶす色を指定することができます。また、edgecolorオプションでは、棒グラフの縁の色の指定が可能です。
例:
fig, ax = plt.subplots() ax.bar(x, y, color="r", edgecolor="g")
出力:

データ長さと同じ長さの色データを準備すれば、棒グラフ一つ一つについても色の設定が可能です。
例:
color=["r", "g", "c", "b", "y"] fig, ax = plt.subplots() ax.bar(x, y, color=color)
出力:

グラフ幅の設定
widthオプションを用いて、グラフの幅を設定することが可能です。 width=1でグラフ間の隙間はなくなります。デフォルトでは0.8です。
例:
fig, ax = plt.subplots()
ax.bar(x, y, width=1)
出力:

データ長さと同じ長さの幅を準備すれば、棒グラフ一つ一つについても幅の設定が可能です。
例:
width=[0.3, 0.4, 0.5, 0.6, 0.7] fig, ax = plt.subplots() ax.bar(x, y, width=width)
出力:

ハッチングの設定
棒グラフにハッチングを入れる場合は、hatchオプションを設定します。
ハッチングは、以下の9種類が設定可能です。
ハッチング | "/" | "\" | "|" | "-" | "+" | "o" | "O" | "." | "*" |
例:
fig, ax = plt.subplots()
ax.bar(x, y, hatch="/")
出力:

横方向の棒グラフ
横方向に棒グラフを表示するためには、barメソッドではなくhbarメソッドを使用します。
barメソッドのverticalオプションでhorizontalを設定しても、エラーが発生するので注意が必要です。
例:
fig, ax = plt.subplots() ax.barh(x, y)
出力:

横軸ラベルの設定
tick_labelオプションを設定することで、横軸ラベルの設定が可能です。
例:
label = ["a", "b", "c", "d", "e"] fig, ax = plt.subplots() ax.bar(x, y, tick_label=label)
出力:

応用
複数の棒グラフを横に並べて表示
各グラフをグラフ幅の分だけずらして表示することで、複数の棒グラフを横に並べて表示することができます。
fig, ax = plt.subplots() width=0.3 ax.bar(x-width/2, y, width=width, label="a") ax.bar(x+width/2, y, width=width, label="b") ax.legend()
出力:

複数の棒グラフを積み重ねて表示
棒グラフを積み上げて表示するには、bottomオプションを使用します。
上に積み上げるほうのグラフのbottomオプションに、下のグラフの高さを設定します。
fig, ax = plt.subplots() ax.bar(x, y, label="a") ax.bar(x, y, bottom=y, label="b") ax.legend()
出力:

エラーバーを表示
棒グラフにエラーバーを追加するには、xerrオプションまたはyerrオプションを使用します。
yerror=[0.3, 0.1, 0.5, 1.1, 0.2] fig, ax = plt.subplots() ax.bar(x, y, yerr=yerror)
出力:
