2012-12-22 9 views
15

Sto provando a sovrapporre alcuni dati empirici con barre di errore sopra i miei dati modellati. Le barre di errore sembrano essere visualizzate per prime e di conseguenza vengono sovrascritte (vedi sotto)Come forzare il rendering di caratteri erratici con Matplotlib

Ho provato a usare zorder ma ottengo lo stesso risultato. Il codice che sto usando è

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) 

sarei grato se qualcuno mi può dire come fare le errorbars rendono in cima.

Mulitplot

+0

Potrebbe tu fornire un esempio più chiaro? Sto osservando con attenzione la tua trama e posso vedere le barre blu di errore sopra gli altri dati (sono sopra il pasticcio grigio e le linee rosse e verdi). I valori sembrano essere relativamente piccoli e quindi non hanno verticali visibili, ma questo è nei dati non matplotlib. – danodonovan

+1

Hai provato ad aumentare lo zorder oltre 300? Inoltre è strano che le estremità dei giradischi vengano renderizzate sopra le linee grigie, ma non le linee. (guarda anche i limiti di errore più bassi negativi sul tuo primo e ultimo punto di dati.) – ebarr

+0

alternativamente, prova a impostare l'ordine delle linee grigie come '-100'. – tacaswell

risposta

16

Questo appare come si tratta di un bug nel matplotlib dove l'argomento zorder del errorbar non viene passato correttamente alla parte linee verticali di barre di errore.

repliche il problema:

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 lavoro Hacky giro:

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

rapporto come un problema da matploblib https://github.com/matplotlib/matplotlib/issues/1622 (ora rattoppato e chiuso)

+0

Grazie mille. Questo ha risolto il mio problema. – Caustic

+0

@tcaswell Grazie mille. Mi hai aiutato ancora una volta. Avevo provato a impostare zorder come positivo, ma non ho mai considerato di forzare i grafici sottostanti ad essere negativi. Brillante. – Blink

+0

@William Mi ha aiutato. Dovresti davvero aggiornare la tua mpl anche se penso che la patch sia 1.2.1 – tacaswell

Problemi correlati