2013-08-28 1 views
9

エラーバープロットをプロットするとき、matplotlibはlinestyleのrcParamsに従っていません。代わりに、それは線で結ばれたすべての点をプロットしています。ここでは最小の作業例を示しますrcParamsでlinestyle = Noneを使用してmatplotlibでエラーバープロットを作成するにはどうすればよいですか?

import matplotlib.pyplot as plt 

lines = {'linestyle': 'None'} 
plt.rc('lines', **lines) 

plt.errorbar((0, 1), (1, 0), yerr=(0.1, 0.1), marker='o') 

plt.savefig('test.pdf') 
plt.delaxes() 

enter image description here

pyplot.errorbar()を呼び出すときに明示的にlinestyle='None'を設定する唯一のソリューションですか?

答えて

24

これは、古いバージョンの「バグ」matplotlib(1.4シリーズの場合はfixed)です。問題は、Axes.errorbarには、fmtのデフォルト値'-'があり、マーカーと行を描画するために使用されるplotへの呼び出しに渡されます。書式文字列がplotに渡されるので、デフォルト値は決してrcparamsにありません。

またrcParam['lines.linestlye']値が尊重されるようになりますどのfmt = ''

eb = plt.errorbar(x, y, yerr=.1, fmt='', color='b') 

に渡すことができます。私はこれを実装するためにPRを提出しました。このため

周りに別の仕事二段階でエラーバーを作ることです。

l0, = plt.plot(x,y, marker='o', color='b') 
eb = plt.errorbar(x, y, yerr=.1, fmt=None, color='b') 

これは迷惑な設計上の決定であるが、それを変更すると、主要なAPIの休憩になります。これについてgithubで問題を開いてください。

エラーバーdoc

補足として、2007年にコールシグネチャが最後に変更されたように見えます。これはエラーバーがデフォルトで青色にならないようにするためです。

+0

ありがとう、私は問題を開いた:https://github.com/matplotlib/matplotlib/issues/2366 – drs

関連する問題