Matplotlibで発散型の積み上げ棒グラフを作成する方法を解説
Matplotlibを使えば、正と負の値が基準線を挟んで左右(上下)に分かれて表示される「発散型の積み上げ棒グラフ」を簡単に作成できます。この記事では、その具体的な手順とサンプルコードを紹介します。
発散型積み上げ棒グラフを作成する手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- インデックスの数を取得するための変数 N を初期化します。
- menMeans、womenMeans、menStd、womenStd の各タプルを用意します。
- 棒グラフの width(幅) を初期化します。
- 図(figure)とサブプロットのセットを作成します。
- 発散型の棒を実現するために、正の値と負の値を持つデータを組み合わせてプロットします。
- 軸に沿って水平線(基準線)を追加します。
- Y軸ラベル、タイトル、目盛り、目盛りラベル、凡例を設定します。
- 図を表示するには show() メソッドを使用します。
サンプルコード
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
N = 5
menMeans = (20, -35, 30, 35, -27)
womenMeans = (25, -32, 34, 20, -25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N)
width = 0.35
fig, ax = plt.subplots()
p1 = ax.bar(ind, menMeans, width, yerr=menStd, label='Men')
p2 = ax.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd, label='Women')
ax.axhline(0, color='grey', linewidth=0.8)
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind)
ax.set_xticklabels(('G1', 'G2', 'G3', 'G4', 'G5'))
ax.legend()
plt.show()
実行結果
上記のコードを実行すると、男性と女性のスコアが正負の値によって発散して表示された積み上げ棒グラフが出力されます。灰色の水平線がゼロの基準線として機能し、正の値は上方へ、負の値は下方へ伸びる棒として描画されます。また、yerr 引数により誤差範囲も同時に表示されます。
この手法は、アンケート結果の賛否評価や、増減を表す財務データなど、基準値を中心としたデータの比較に特に有効です。
-
Matplotlibで棒グラフのバーにテキストを表示する方法
Matplotlibの棒グラフで、各バーの上にテキスト(数値やラベルなど)を表示したい場合は、text()メソッドを使用します。このメソッドを使うことで、グラフ上の任意の位置(x座標・y座標)を指定して、自由にテキストを配置できます。 実装の手順 x軸のラベル、y軸の値、そしてpercentage(パーセント値)のリストをそれぞれ作成します。 bar()メソッドを使って棒グラフを描画します。 zip()関数で3つのリストをまとめ、for文で反復処理しながら各バーの位置にテキストを配置します。 最後にshow()メソッドを呼び出して図を表示します。 コード例 import matplotli
-
Pythonのmatplotlibで積み上げ棒グラフを作成・表示する方法
Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は、数値を一つずつ確認したり複雑な計算を行ったりすることなく、データ全体の傾向や特徴を直感的に把握するために欠かせないステップです。また、定量的な洞察を効果的に伝える手段としても非常に有用です。 Matplotlibは、データをもとに2次元のグラフやプロットを作成するために使用されます。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも可能です。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境で