Matplotlibの棒グラフでエラーバーの線を太く表示する方法
Matplotlibの棒グラフにおいて、エラーバー(誤差範囲)の線を太くしたい場合は、error_kw引数に辞書形式(dict())でプロパティを指定することで実現できます。この記事では、具体的な手順とサンプルコードをわかりやすく解説します。
実装手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- 棒グラフのデータ(ラベル・平均値・標準偏差・幅など)を辞書として定義します。
- figureオブジェクトとサブプロットを作成します。
- bar()メソッドを使い、yerrでエラー値を指定し、error_kwでエラーバーのスタイルを設定して棒グラフを描画します。
- show()メソッドで図を表示します。
エラーバーの主なカスタマイズ項目
error_kwに指定できる代表的なプロパティは以下の通りです。
- lw:エラーバーの線の太さ(line width)。数値が大きいほど太くなります。
- capsize:エラーバーの端につくキャップ(横棒)のサイズ。
- capthick:キャップ部分の線の太さ。
サンプルコード
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
bar_details = {
"labels": ['G1', 'G2', 'G3', 'G4', 'G5'],
"men_means": [20, 35, 30, 35, 27],
"men_std": [2, 3, 4, 1, 2],
"width": 0.35
}
fig, ax = plt.subplots()
ax.bar(bar_details["labels"], bar_details["men_means"], bar_details["width"],
yerr=bar_details["men_std"], label='Men',
error_kw=dict(lw=5, capsize=5, capthick=3))
plt.show()コードのポイント解説
上記のコードでは、error_kw=dict(lw=5, capsize=5, capthick=3) の部分が重要です。デフォルトでは細くて見づらいエラーバーが、lw=5によって線が太くなり、capsize=5でキャップが追加され、capthick=3でキャップも太く描画されます。これにより、プレゼンテーション資料やレポートでも視認性の高いグラフを作成できます。
なお、yerrには各バーに対応する誤差値(ここでは標準偏差)をリストで渡します。値の数は棒の本数と一致させる必要がある点に注意してください。
出力結果

実行すると、各棒グラフの上部に太いエラーバーが表示され、データのばらつきがひと目でわかるグラフになります。エラーバーの色やスタイルをさらに変更したい場合は、error_kwに ecolor や elinewidth などのプロパティを追加することで柔軟にカスタマイズ可能です。
-
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など、さまざまな環境で