実験データには基本誤差がつきもので,グラフ上にエラーバーで表示させる必要があります
Pythonでは少ないコードで簡単にエラーバー付きのグラフを表示させることができます
本記事ではPythonのMatplotlibでグラフを描画する際に,エラーバーを表示する方法について詳しく解説します
折れ線グラフへのグラフのエラーバー表示から,散布図への適用,そして詳細なAxes.errorbar関数の引数まで紹介します
折れ線グラフのエラーバー (Axes.errorbar)
Matplotlibでエラーバーを表示するにはAxes.errorbar関数を使います
- 引数
-
- x, y (float or 配列) : データの座標
- xerr, yerr (float or 配列) : エラーバーの幅.±数値で表示.
- fmt (文字列) : フォーマット文字列で,線種,線色,マーカーを一度に指定可能
- ecolor (color) : エラーバーの線色
- elinewidth (float) : エラーバーの線の太さ
- capsize (float) : エラーバーのキャップの長さ
- capthick (float) : エラーバーのキャップ厚さ
- barsabove (bool) : エラーバーとマーカーのz方向の位置
- lolims, uplims, xlolims, xuplims (bool) : エラーバーが矢印で表示
- errorevery (int) : エラーバーの表示頻度
- 返値
- 公式ドキュメント
-
matplotlib.axes.Axes.errorbar — Matplotlib 3.6.0 documentation
エラーバーを配列で指定 (yerr)
最もシンプルなエラーバー付き折れ線グラフです
エラーバーの数値は配列で指定します
下記のタブにコードとフローチャートの解説をしています
import matplotlib.pyplot as plt
import numpy as np
# step1 データの作成
x = np.arange(5)
y = [4.6, 3.6, 5, 4.2, 2.7]
yerr = [0.6, 0.9, 1.2, 0.5, 0.7]
# step2 グラフフレームの作成
fig, ax = plt.subplots()
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr)
ax.set_xlabel('X label')
ax.set_ylabel('Y label')
ax.set_title('Simple errorbar')
plt.show()

エラーバーを数値のみで指定 (xrr, yerr)
最もシンプルなエラーバー付き折れ線グラフです
エラーバーは1つの数値のみで指定します
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, xerr=0.2, yerr=0.4)

フォーマットの設定と散布図 (fmt)
fmt(フォーマット文字列)は,下記のようにマーカー,線種,色を一度に指定できます
fmt = '[marker][line][color]'
線を無しにして,マーカーのみにすると散布図にすることも可能です
fmtを使って3種類のグラフを作成しました
# step3 エラーバー付き折れ線グラフ
# 円形+緑色+散布図
ax.errorbar(x, y, yerr=0.4, fmt='og' ,label='fmt="og"')
# 四角形+赤色+一点鎖線
ax.errorbar(x, [i+2 for i in y], yerr=0.4, fmt='sr-.' ,label='fmt="sr-."')
# 星形+シアン+点線
ax.errorbar(x, [i+4 for i in y], yerr=0.4, fmt='*c:' ,label='fmt="*c:"')

エラーバーの色と太さ
このセクションでは,エラーバーの色と太さの指定方法について解説します
エラーバーの色 (ecolor)
エラーバーの色はAxes.errorbar関数の引数であるecolorを使用します
下記ではecolor=’red’で赤色にしました
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', ecolor='red')

エラーバーの太さ (elinewidth)
エラーバーの太さはAxes.errorbar関数の引数であるelinewidthを使用します
下記ではelinewidth=’0.5′としました
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', elinewidth=0.5)

エラーバーのキャップ
このセクションでは,エラーバーの幅を表すキャップの長さと厚さの指定方法について解説します
また,キャップを矢印にする方法についても解説します
キャップの長さ (capsize)
エラーバーのキャップの長さはAxes.errorbar関数の引数であるcapsizeを使用します
下記ではcapsize=0で,キャップ部分を排除しました
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', ecolor='red', capsize=0)

キャップの太さ (capthick)
エラーバーのキャップの太さはAxes.errorbar関数の引数であるcapthickを使用します
下記ではcapthick=5で,キャップ部分を太くしました
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', ecolor='red', capthick=5)

y方向のキャップを矢印に変更 (uplims, lolims)
Axes.errorbar関数の引数であるuplims or lolimsで,エラーバーのキャップを矢印に変更できます
下記ではuplimsはy方向プラス側,lolimsはy方向マイナス側です
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', uplims=True, label='uplims')
ax.errorbar(x, [i+2 for i in y], yerr=0.4, fmt='o-', lolims=True, label='lolims')

x方向のキャップを矢印に変更 (xuplims, xlolims)
Axes.errorbar関数の引数であるxuplims or xlolimsで,エラーバーのキャップを矢印に変更できます
下記ではxuplimsはx方向プラス側,xlolimsはx方向マイナス側です
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, xerr=0.2, fmt='o-', xuplims=True, label='xuplims')
ax.errorbar(x, [i+2 for i in y], xerr=0.2, fmt='o-', xlolims=True, label='xlolims')

エラーバーの表示スタイル
このセクションでは,エラーバーの表示に関係する引数について解説します
エラーバーのz位置や表示頻度,矢印表示を指定します
エラーバーのz位置 (barsabove)
エラーバーとマーカーのz方向の位置関係はbarsaboveで変更できます
Axes.errorbar関数の引数であるbarsabove=Trueでエラーバーがマーカーより前面に表示されます
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', ecolor='gray', barsabove=True)

エラーバーの表示頻度 (errorevery)
エラーバーの表示頻度はAxes.errorbar関数の引数であるerroreveryを使用します
下記ではerrorevery=2で,2データごとにエラーバーを表示しました
# step3 エラーバー付き折れ線グラフ
ax.errorbar(x, y, yerr=0.4, fmt='o-', ecolor='red', errorevery=2)

参考文献
Axes.errorbar関数
エラーバーの書き方
コメント