2013-08-28 48 views
9

繪製誤差線圖時,matplotlib不跟隨沒有linestyle的rcParams。相反,它繪製了與一條線相連的所有點。這裏有一個最低工作例如:如何在matplotlib中使用linestyle = None在rcParams中繪製一個誤差線圖?

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的舊版本中的「bug」(並且對於1.4系列已經是fixed)。問題是在Axes.errorbarfmt的默認值爲'-',然後傳遞給plot的調用,該調用用於繪製標記和線條。由於格式字符串傳遞到plot中,因此永遠不會查看rcparams中的默認值。

您也可以通過在fmt = ''

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

這將導致尊重rcParam['lines.linestlye']值。我已經提交了一個PR來執行此操作。

另一種變通方法,這是使errorbar分兩步:

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

相關問題