Python 3 - Matplotlib 棒グラフを作成する

目次

棒グラフを作成する (1)

棒グラフ (bar chart) を作成するためには、 matplotlib.pyplot モジュールの bar 関数を使います。

ここで、bar 関数の必須な引数は x, height の 2 つです。

オプション引数については、まず width, bottom が有ります。
更にキーワード専用引数と可変長キーワード引数については、 align, tick_label, color, facecolor, edgecolor, linewidth などが有ります。

Example

source code

from matplotlib import pyplot

x = [1, 2, 3, 4]
values = [10, 20, 5, 25]
width = 0.2
pyplot.bar(x, values, width)

pyplot.savefig("bar_chart.png")

result

実行結果

棒グラフを作成する (2)

Axes オブジェクトの bar メソッドを使うことでも、 棒グラフを作成することができます。

Example

source code

from matplotlib import pyplot

x = [1, 2, 3, 4]
values = [10, 20, 5, 25]

fig = pyplot.figure()
ax = fig.add_subplot(1, 1, 1)

width=0.2
ax.bar(x, values, width)

pyplot.savefig("bar_chart.png")

result

棒グラフを作成する (1)」と同様。

棒グラフの書式を変更する

下記のいずれかの方法で、棒グラフの書式を変更することができます。

Example A

source code

from matplotlib import pyplot

x = [1, 2, 3, 4]
values = [10, 20, 5, 25]

fig = pyplot.figure()
ax = fig.add_subplot(1, 1, 1)
ax.bar(x, values, 0.2, facecolor="c",
                       edgecolor="blue",
                       linewidth=5.5)

pyplot.savefig("bar_chart_format_a.png")

result

実行結果

Example B

source code

from matplotlib import pyplot

x = [1, 2]
values = [10, 20]

fig = pyplot.figure()
ax = fig.add_subplot(1, 1, 1)
bars = ax.bar(x, values, width=[0.4, 0.2])

pyplot.setp(bars[0], fc="#ffff00",
                     ec="forestgreen",
                     lw=2.5)

bars[1].set_facecolor("plum")
bars[1].set_edgecolor("darkorchid")
bars[1].set_linewidth(7.5)

pyplot.savefig("bar_chart_format_b.png")

result

実行結果

積み上げ棒グラフを作成する

積み上げ棒グラフを作成するには、 次のような手順で bar メソッドを使うことで実現できます。

  1. 「下から1番目の棒」を作成する時は、bottom を指定しない (もしくは bottom=0)
  2. 「下から2番目の棒」を作成する時は、bottom に「下から1番目の棒の高さ」を指定する
  3. 「下から3番目の棒」を作成する時は、bottom に「下から1番目と2番目の棒の高さの合計」を指定する

Example

source code

import numpy
from matplotlib import pyplot

x = [1, 2, 3, 4]
values1 = numpy.array([10, 20, 15, 25])
values2 = numpy.array([30, 25, 20, 15])
values3 = numpy.array([5, 10, 15, 20])

fig = pyplot.figure()
ax = fig.add_subplot(1, 1, 1)

ax.bar(x, values1, 0.2)

bottom = values1
ax.bar(x, values2, 0.2, bottom)

bottom = values1 + values2
ax.bar(x, values3, 0.2, bottom)

pyplot.savefig("stacked_bar_chart.png")

result

実行結果

参考リンク