2013-08-28 15 views
9

Hata grafiği çizerken matplotlib, stil çizgisinin olmadığı RCParams'ı takip etmiyor. Bunun yerine, bir çizgi ile bağlantılı tüm noktaları çiziyor.Matplotlib'de linhost = error = error = "error" hatası nasıl yapılır? RcParams içinde yok?

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() çağrılırken için açıkça linestyle='None' set tek çözüm var mı: İşte asgari çalışma örnek?

cevap

24

Bu, matplotlib'un eski sürümlerinde bir "hata" dır (ve 1.4 serisi için fixed olmuştur). Sorun, Axes.errorbar'da, fmt için '-' için varsayılan bir değer olup, daha sonra işaretleyicileri ve çizgiyi çizmek için kullanılan plot aramasına geçirilir. Bir biçim dizesi plot'a iletildiğinden, hiçbir zaman rcparams'daki varsayılan değere bakmaz.

Ayrıca rcParam['lines.linestlye'] değer saygı duyulması neden olacaktır fmt = ''

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

geçirebilirsiniz. Bunu uygulamak için bir PR gönderdim.

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

Bu sinir bozucu bir tasarım kararı, ancak bunu değiştirmesini önemli API sonu olacaktır:

etrafında bunun için başka çalışmalar iki adımda errorbar yapmaktır. Lütfen bu konuda bir github sorunu açın.

hata çubuğu doc.

Bir yan not olarak, 2007'de çağrı imzasının en son değiştirildiği anlaşılıyor ve bu, hata çubuklarının varsayılan olarak mavi olmamasıydı.

+0

Teşekkürler, bir sorun açtım: https://github.com/matplotlib/matplotlib/issues/2366 – drs