以前の記事で信頼区間(エラーバー)を付ける方法を勉強しました。 今回は、Matplotlibでエラーバー を描く時の注意点と、公式のバグ(エラー)について紹介します。

エラーバー 間隔を定義する「errorevery」は現在公式バグにより、機能しない

それでは早速ソースコードです。
import numpy as np import matplotlib.pyplot as plt # example data x = np.arange(0.1, 4, 0.1) y1 = np.exp(-1.0 * x) y2 = np.exp(-0.5 * x) # example variable error bar values y1err = 0.1 + 0.1 * np.sqrt(x) y2err = 0.1 + 0.1 * np.sqrt(x/2) # Now switch to a more OO interface to exercise more features. fig, (ax_l, ax_c, ax_r) = plt.subplots(nrows=1, ncols=3, sharex=True, figsize=(12, 6)) ax_l.set_title('all errorbars') ax_l.errorbar(x, y1, yerr=y1err) ax_l.errorbar(x, y2, yerr=y2err) ax_c.set_title('only every 6th errorbar') ax_c.errorbar(x, y1, yerr=y1err, errorevery=6) ax_c.errorbar(x, y2, yerr=y2err, errorevery=6) ax_r.set_title('second series shifted by 3') #ax_r.errorbar(x, y1, yerr=y1err, errorevery=(0, 6)) 公式のバグ #ax_r.errorbar(x, y2, yerr=y2err, errorevery=(3, 6)) 公式のバグ ax_r.errorbar(x, y1, yerr=y1err, errorevery=5) ax_r.errorbar(x, y2, yerr=y2err, errorevery=7) plt.savefig("logo19.png") plt.show()
これを出力すると、以下の図になります。
logo19
綺麗な図が描けました:D

 2つのグラフを描写すると、エラーバー がかぶって見づらい。なのでエラーバー 間隔をずらして描写したいが、、、

1つ目の図だと、エラーバー がかぶって正しく読み取ることができないですよね。

エラーバー の表示間隔を「errorevery=6」とすれば、エラーバー の数を減らすことができますが、青とオレンジのグラフのエラーバー がかぶってしまい、これでも正しく読み取ることができませんよね(真ん中の図)

そこで、「errorevery=(0,6)」とすると、「0番目のプロット点から6間隔でエラーバー を描写する」という設定にできるのですが、これが現在のMatplotlibでは公式のバグで、
「errorevery=(0,6)」とプログラムを書くと、エラーでコードが止まってしまいます。

公式のバグなので、仕方ないですよね。。知っていれば1分で諦めが付きますが、知らないと1時間も2時間も悩んでしまいますよね。

現状では、「
errorevery=素数」として、なんとかエラーバー のプロットをずらすしか、方法は無いようです。

一応、綺麗にできたので、この図もInstagramに投稿しようと思います:)