【matplotlib】エラーバー表示の基本と折れ線グラフ、散布図、棒グラフへのエラーバーの追加方法[Python]

  • URLをコピーしました!
目次

データの準備

これまでmatplotlibに関して、折れ線グラフ、棒グラフ、散布図を解説してきました。

今回はこれらのグラフにエラーバーを表示してみます。

ただこれまで使ってきたデータはちょっとデータポイントが多いので、新しいデータを使うことにします。

またX軸方向、Y軸方向の両方にエラーバーを表示させたいので、まずは散布図として表示します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

fig=plt.figure(figsize=(8,6))

plt.scatter(x_value, y_value, s=100)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

だいぶシンプルなデータですが、このデータにエラーバーを付け加えてみましょう。

エラーバーを追加する

エラーバーを追加するには、エラーバー用のデータが必要になります。

そこで、x_error、y_errorというデータを含んだリストを追加しました。

エラーバーはplt.errorbar(X軸の座標のリスト, Y軸の座標のリスト, xerr=X軸のエラーバーのリスト, yerr=Y軸のエラーバーのリスト)で追加できます。

まずはX軸方向のみ表示してみましょう。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

次にY軸方向のみエラーバーを表示してみます。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

最後にX軸方向、Y軸方向の両方にエラーバーを表示してみます。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

エラーバーは表示できたのですが、綺麗なグラフではないですよね。

散布図がいつの間にか折れ線グラフになっていますし、エラーバーの色もグラフの色と被ってしまっています。

さらにエラーバーの端に小さなバーがありません。

このグラフを元にさらに色々いじってみましょう。

ラインを消す

エラーバーを表示したいので、データポイントの間を繋げている線はいりません。

そこで線を消してみましょう。

そのためにはplt.errorbar()に linestyle=”None”を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error, linestyle="None")

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

無事、エラーバーだけになりました。

キャップをつける

エラーバーには、末端に線がついていることがありますよね。

これを表示するには、plt.errorbar()にcapsize=サイズ を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error, linestyle="None", capsize=10)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

色を変える

グラフにエラーバーを表示する時、同じ色だと分かりにくいということもあるでしょう。

そこで、エラーバーの色の変えてみましょう。

色を変えるには、plt.errorbar()にecolor = “色” を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error, linestyle="None", capsize=10, ecolor="black")

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

色の指定方法は、線の色を変えるのと同じで、色の名前で指定する方法、色の名前の略語で指定する方法、カラーコードで指定する方法があります。

線の太さを変える

エラーバーの線が細いと、グラフと被ってしまい、分かりにくい時もあることでしょう。

エラーバーの線の太さを変えるには、plt.errorbar()にwidth=線の太さ を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error, linestyle="None", capsize=10, ecolor="black", linewidth=10)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

キャップの線の太さを変える

上の例では、エラーバーの線の太さは変わりましたが、キャップの線の太さは変わりません。

これはまた別のコマンドが存在します。

キャップの線の太さを変えるには、plt.errorbar()にcapthick=線の太さ を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, xerr=x_error, yerr=y_error, linestyle="None", capsize=10, ecolor="black", linewidth=10, capthick=10)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

折れ線グラフのエラーバー

折れ線グラフに対して、エラーバーを乗せてみます。

折れ線グラフだと大体Y値に対するエラーバーのみを表示しますので、X値に対するエラーバー(xerr)は消します。

またlinestyle=”None”として線を消していたので、このコマンドを消して、線を表示させます。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", linewidth=3, capthick=3)

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

線の色を変えたり、点線にしたりのコマンドは折れ線グラフの変更方法と同じです。

線の色を変えるには、color=”線の色”

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", linewidth=3, capthick=3, color="red")

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

線の種類を変えるには、linesytle=”線の種類”

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", linewidth=3, capthick=3, color="red", linestyle=":")

plt.tick_params(labelsize=20)
plt.grid()

plt.show()

実行結果

このグラフに対して、凡例を表示することもできます。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", linewidth=3, capthick=3, color="red", linestyle=":", label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

plt.errorbarのみで折れ線グラフを作ってもいいのですが、plt.plotとの組み合わせもプログラムが分かりやすくなって、個人的には好きです。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.plot(x_value, y_value, linewidth=3, color="red", linestyle=":", label="test")
plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

散布図のエラーバー

次に散布図にエラーバーを表示してみましょう。

線はいらないので、linestyle=”None”とします。

また点を表示したいので、marker=”o”を追加します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None", marker="o", label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

点の色や形を調整するのは、散布図の時と同じです。

点の形を変えるには、marker=”形状”。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None", marker="^", label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

色を変えるには、color=”色の名前”を追加。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None", marker="^", color="red", label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

ただしサイズを変更するのは異なり、ms=”サイズ”かもしくは、markersize=”サイズ”になります。

(散布図の時は、s=”サイズ”です)

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None", marker="^", color="red", ms=10, label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

折れ線グラフの時と同様、plt.scatterとplt.errorbarを別で書くことも可能です。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.scatter(x_value, y_value, marker="^", color="red", s=100, label="test")
plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

棒グラフのエラーバー

棒グラフのエラーバーを最後にしたのは、実は理由があります。

棒グラフはplt.errorbarを使わなくても、エラーバーを表示することができます。

その際には、plt.barにyerr=”エラーの値”を追加するだけです。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.bar(x_value, y_value, yerr=y_error, label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

こちらに対しても、capsize=”大きさ”でキャップを表示することができます。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.bar(x_value, y_value, yerr=y_error, capsize=5, label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

ただしこの場合、キャップサイズとエラーバーの色は変更できますが、太さは変更できないようです。

エラーバーの色を変えるには、ecolor=”色”で変更します。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.bar(x_value, y_value, yerr=y_error, capsize=5, ecolor="red", label="test")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

棒グラフでplt.bar、plt.errorbarを分けて書くとこんな感じになります。

x_value = [1, 2, 3, 4, 5]
y_value = [10, 20, 40, 80, 160]

x_error = [0.1, 0.2, 0.3, 0.4, 0.5]
y_error = [5, 10, 15, 20, 25]

fig=plt.figure(figsize=(8,6))

plt.bar(x_value, y_value, label="test")
plt.errorbar(x_value, y_value, yerr=y_error, capsize=10, ecolor="black", capthick=3, linestyle="None")

plt.tick_params(labelsize=20)
plt.legend()
plt.grid()

plt.show()

実行結果

折れ線グラフ、散布図、棒グラフに対してエラーバーを表示するのに、plt.errorbarとplt.plot(折れ線グラフ)、plt.scatter(散布図)、plt.bar(棒グラフ)を分けて書くことにより、より細かく調整することができると考えると、やはり個人的には分けて書いた方があとあと使いやすいかなと思います。

これで2次元グラフはほぼ思い通り操れるようになったかと思います。

ちなみにmatplotlibでは2次元グラフだけでなく、3次元のグラフを描くことも可能です。

その解説に関してはこちらの記事をご覧ください。

次回はPythonで日時を取得する方法を解説していきます。

ということで今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次