Pynote

Python、機械学習、画像処理について

matplotlib - errorbar で誤差棒付きの折れ線グラフを作成する方法について

関連

y 軸方向の誤差棒

yerr=err

各点に [-err, err] の誤差棒を付ける。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots()
ax.errorbar(x, y, yerr=0.1)

plt.show()
x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(4, 6))
ax.errorbar(y, x, xerr=0.1)

plt.show()


yerr=[err1, err2, ..., errn]

各点に [-erri, erri] の誤差棒を付ける。

yerr = np.random.uniform(0.1, 0.3, len(x))

fig, ax = plt.subplots()
ax.errorbar(x, y, yerr=yerr)

plt.show()


yerr=[[err_min1, err_max1], [err_min2, err_max2], ..., [err_minn, err_maxn]]

各点に [-err_mini, err_maxi] の誤差棒を付ける。

yerr = np.random.uniform(0.1, 0.3, (2, len(x)))

fig, ax = plt.subplots()
ax.errorbar(x, y, yerr=yerr)

plt.show()


x 軸方向の誤差棒

xerr で x 軸方向に誤差棒を付けられる。

x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(4, 6))
ax.errorbar(y, x, xerr=0.1)

plt.show()


折れ線グラフのスタイル

plot と指定方法は同じである。

x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots()
ax.errorbar(x, y, yerr=0.1, fmt='o-')

plt.show()


誤差棒のスタイルを設定する。

  • ecolor: 誤差棒の色
  • elinewidth: 誤差棒の太さ
  • capsize: 誤差棒のキャップの大きさ
  • capthick: 誤差棒のキャップの太さ
x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots()
ax.errorbar(x, y, yerr=0.1,
            ecolor='red', elinewidth=1, capsize=4, capthick=3)

plt.show()


誤差棒に下限、上限が存在しないことを表す矢印を付ける。

  • lolims: True の場合、y 方向の誤差は下限しか存在しないことを表すため、上限が存在しないことを意味する矢印を +y 方向に付ける。
  • uplims: True の場合、y 方向の誤差は上限しか存在しないことを表すため、下限が存在しないことを意味する矢印を -y 方向に付ける。
  • xlolims: True の場合、x 方向の誤差は下限しか存在しないことを表すため、上限が存在しないことを意味する矢印を +x 方向に付ける。
  • xuplims: True の場合、x 方向の誤差は上限しか存在しないことを表すため、下限が存在しないことを意味する矢印を -x 方向に付ける。
x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, [ax1, ax2] = plt.subplots(1, 2, figsize=(8, 3))
ax1.set_title("lolims=True")
ax1.errorbar(x, y, yerr=0.1, ecolor='red', lolims=True)
ax2.set_title("uplims=True")
ax2.errorbar(x, y, yerr=0.1, ecolor='red', uplims=True)

plt.show()


x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, [ax1, ax2] = plt.subplots(1, 2, figsize=(8, 3))
ax1.errorbar(y, x, xerr=0.1, ecolor='red', xlolims=True)
ax1.set_title("xlolims=True")
ax2.errorbar(y, x, xerr=0.1, ecolor='red', xuplims =True)
ax2.set_title("xuplims=True")

plt.show()


誤差棒を表示する間隔を設定する。

サンプル点のうち、何個おきに誤差棒を設定するかを指定する。

x = np.linspace(0, np.pi * 4, 20)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(5, 5), )
ax.errorbar(x, y, yerr=0.1, ecolor='red', errorevery=2)

plt.show()