Как заставить errorbars отображать последний с помощью Matplotlib

Я пытаюсь перефразировать некоторые эмпирические данные с барами ошибок поверх моих смоделированных данных. Кажется, что полосы ошибок отображаются сначала и, следовательно, переписываются (см. Ниже)

Я попытался использовать zorder, но я все равно получаю тот же результат. Код, который я использую,

    for i in range(1,len(pf)):
            pf[i,:] = av_pf_scale * pf[i,:]
            pylab.semilogy(pf[0,0:180],pf[i,0:180],color='0.75')

    pylab.semilogy(av_pf[0:180],color='r')
    pylab.semilogy(av_mie[0:180],color='g', linestyle='-')

    pylab.draw()
    f = pylab.errorbar(ang,data[j],
                            yerr = delta_data[j],
                            fmt = 'o',
                            markersize = 3,
                            color = 'b',
                            zorder = 300,
                            antialiased = True)

Я был бы признателен, если кто-нибудь скажет мне, как сделать рендеринг errorbars сверху.

Mulitplot

Ответы

Ответ 1

Похоже, что это ошибка в matplotlib, где аргумент zorder errorbar неправильно передан в вертикальную часть строки ошибок.

реплицирует вашу проблему:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.gca()
[ax.plot(rand(50),color='0.75') for j in range(122)];
ax.errorbar(range(50),rand(50),yerr=.3*rand(50))
plt.draw()

error bar fail Хакки работают:

fig = plt.figure()
ax = plt.gca()
[ax.plot(rand(50),color='0.75',zorder=-32) for j in range(122)];
ax.errorbar(range(50),rand(50),yerr=.3*rand(50))
plt.draw()

error bar hack

Сообщить как проблему для matploblib https://github.com/matplotlib/matplotlib/issues/1622 (теперь исправлено и закрыто)