Matplotlib バープロット – チュートリアルと例題

Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。単純な可視化から複雑な可視化まで、ほとんどの場合、このライブラリは頼りになります。

このチュートリアルでは、Matplotlib で棒グラフを作成する方法を見ていきます。

棒グラフは、一方の軸に数値、もう一方の軸にカテゴリ変数を表示し、異なるカテゴリの出現回数を確認することができます。

となります。
棒グラフは、時系列データの可視化だけでなく、カテゴリデータの可視化にも使えます。

&gt
&gt

Matplotlib で棒グラフを描画する

Matplotlib での棒グラフの描画は、PyPlot インスタンスで bar() 関数を呼び出し、可視化したいカテゴリ変数と数値変数を渡すだけで、簡単にできます。

import matplotlib.pyplot as plt


x = ['A', 'B', 'C']
y = [1, 5, 3]


plt.bar(x, y)
plt.show()


ここでは、ABCの3つのカテゴリ変数がリストとして用意されています。また、別のリストには連続変数がいくつかあります – 153 です。これらの2つのリストの関係をバープロットで可視化するには、 plt.bar() に渡します。

この結果、クリーンでシンプルな棒グラフが得られます。

Matplotlib で横棒グラフを描画する

しばしば、棒グラフを垂直方向ではなく水平方向にプロットしたいと思うことがあります。これは、 plt.bar() 呼び出しを plt.barh() 呼び出しに切り替えることで容易に実現可能です。

import matplotlib.pyplot as plt


x = ['A', 'B', 'C']
y = [1, 5, 3]


plt.barh(x, y)
plt.show()


この結果、水平方向に向いた棒グラフが得られます。

Matplotlib で棒グラフの色を変更する

棒グラフ自体の色を変更するには、 color 引数に色のリストを指定するだけで、簡単に行えます。もし、リストの色よりも多くの棒グラフがある場合、それらは再び最初の色から適用されます。

import matplotlib.pyplot as plt


x = ['A', 'B', 'C']
y = [1, 5, 3]


plt.bar(x, y, color=['red', 'blue', 'green'])
plt.show()


これで、きれいな色の棒グラフができました。

もちろん、省略形やHTMLコードを使うこともできます。

plt.bar(x, y, color=['red', 'blue', 'green'])
plt.bar(x, y, color=['r', 'b', 'g'])
plt.bar(x, y, color=['#ff0000', '#00ff00', '#0000ff'])
plt.show()


また、スカラー値を1つだけ入れて、すべての棒グラフに適用することもできます。

plt.bar(x, y, color='green')


Matplotlib でのエラーバー付き棒グラフ

棒グラフの一般的なアプリケーションであるリストの平均値をプロットするとき、いくつかのエラースペースが発生します。これらの平均がどの程度正確で、どのような偏差が予想されるかを他の観測者や自分自身に知らせるために、エラーバーをプロットすることは非常に有用です。

そこで、いくつかの値からなるデータセットを作り、その平均と標準偏差をNumpyで計算し、エラーバー付きでプロットしてみましょう。

import matplotlib.pyplot as plt
import numpy as np


x = np.array([4, 5, 6, 3, 6, 5, 7, 3, 4, 5])
y = np.array([3, 4, 1, 3, 2, 3, 3, 1, 2, 3])
z = np.array([6, 9, 8, 7, 9, 8, 9, 6, 8, 7])


x_mean = np.mean(x)
y_mean = np.mean(y)
z_mean = np.mean(z)


x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)


bars = [x_mean, y_mean, z_mean]
bar_categories = ['X', 'Y', 'Z']
error_bars = [x_deviation, y_deviation, z_deviation]


plt.bar(bar_categories, bars, yerr=error_bars)
plt.show()


ここでは、いくつかの値からなる偽のデータセットを3つ作りました。これらのリストの平均値を可視化する。しかし、平均値もそうですが、正確さを誤認させることがあるので、これらのデータセットの標準偏差も計算し、エラーバーとして追加することにします。

Numpyの mean()std() 関数を使えば、これは簡単です。そして、棒グラフの値を bars リストに、ユーザーエクスペリエンスを高めるために棒グラフの名前を bar_categories に、最後に標準偏差の値を error_bars リストに詰め込みました。

これを可視化するために、通常の bar() 関数を呼び出し、 bar_categories (カテゴリ値) と bars (連続値) を yerr 引数と一緒に渡します。

縦にプロットしているので、 yerr 引数を使用しています。もし、水平方向にプロットするのであれば、 xerr 引数を使用します。ここでは、エラーバーに関する情報を提供しました。

この結果、最終的には

Matplotlib での積み重ね棒グラフのプロット

最後に、積み上げ棒グラフをプロットしてみましょう。積み上げ棒グラフは、変数のグループを持っていて、それらを1つずつ隣にプロットするのではなく、1つを他の上にプロットしたい場合にとても便利です。

このために、我々は再びデータのグループを持つことにします。そして、エラーバーのために、それらの標準偏差を計算します。

最後に、これらの変数を相対的な順序を維持しながら、互いに重ねてプロットするためのインデックス範囲が必要です。このインデックスは、基本的に、私たちが得たすべてのグループの長さに相当する数値の範囲となります。

あるバーを別のバーの上に重ねるには、 bottom 引数を使用します。そのバーの bottom の上にあるものを指定します。xyの下にプロットするには、xybottom` に設定します。

複数のグループの場合は、プロットする前に値を足す必要があります。そうしないと、棒グラフは足し算になりません。ここでは、Numpyの np.add().tolist() を使って、2つのリストの要素を足し合わせて、リストを返します。

import matplotlib.pyplot as plt
import numpy as np


# Groups of data, first values are plotted on top of each other
# Second values are plotted on top of each other, etc
x = [1, 3, 2]
y = [2, 3, 3]
z = [7, 6, 8]


# Standard deviation rates for error bars
x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)


bars = [x, y, z]
ind = np.arange(len(bars))
bar_categories = ['X', 'Y', 'Z'];
bar_width = 0.5
bar_padding = np.add(x, y).tolist()


plt.bar(ind, x, yerr=x_deviation, width=bar_width)
plt.bar(ind, y, yerr=y_deviation, bottom=x, width=bar_width)
plt.bar(ind, z, yerr=z_deviation, bottom=bar_padding, width=bar_width)


plt.xticks(ind, bar_categories)
plt.xlabel("Stacked Bar Plot")


plt.show()


このコードを実行すると、次のようになります。

結論

このチュートリアルでは、Matplotlib と Python を使って棒グラフを描くいくつかの方法について説明しました。また、エラーバーを計算し、追加する方法、そして棒グラフを重ねる方法も説明しました。

もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonによるデータ可視化に関する書籍の束をチェックしてみてください。

Pythonによるデータ可視化

データビジュアライゼーションで危険な存在になる

30日間無条件返金保証

初級から上級まで

定期的に無料で更新(最新更新は2021年4月)

ボーナスリソースやガイドを更新

Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。

本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要
があることすべてを教えてくれる、詳細なガイドです。

Pythonでデータ可視化」は、Pythonの初級~中級開発者向けの本で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornといったコアなプロットライブラリを取り上げ、Altairのような宣言的・実験的なライブラリの活用方法までを案内しています。具体的には、11章にわたって、9つのPythonライブラリを取り上げています。Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。

データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。

タイトルとURLをコピーしました