Matplotlib: disegna le linee della griglia dietro altri elementi del grafico


124

In Matplotlib, creo linee di griglia tratteggiate come segue:

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')

tuttavia, non riesco a scoprire come (o anche se è possibile) fare in modo che le linee della griglia vengano disegnate dietro altri elementi del grafico, come le barre. Cambiare l'ordine di aggiunta della griglia rispetto all'aggiunta di altri elementi non fa differenza.

È possibile fare in modo che le linee della griglia appaiano dietro tutto il resto?


10
ax.set_axisbelow(True)funziona ancora. Bello anche per l'output in pdf ...
BandGap

5
Mi sarei aspettato ax.set_axisbelow(True)che fosse l'impostazione predefinita ...
PatrickT

Risposte:


122

Secondo questo - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - puoi usareAxis.set_axisbelow(True)

(Attualmente sto installando matplotlib per la prima volta, quindi non ho idea se è corretto - l'ho appena trovato cercando su Google "matplotlib z order grid" - "z order" è tipicamente usato per descrivere questo genere di cose (z è l'asse "fuori pagina"))


È possibile avere le griglie sotto la barra / linea mantenendo le etichette in alto? Ho anche postato questo quesiton separatamente stackoverflow.com/questions/29522447/...~~V~~singular~~3rd
joelostblom

Potrebbe essere questo matplotlib.1069221.n5.nabble.com/… , antico thread però.
Jacques Kvam

86

Per me, non era chiaro come applicare la risposta di andrew cooke, quindi questa è una soluzione completa basata su questo:

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

34

Se vuoi convalidare l'impostazione per tutte le cifre, puoi impostare

plt.rc('axes', axisbelow=True)

o

plt.rcParams['axes.axisbelow'] = True

Funziona per Matplotlib> = 2.0.


8

Ho avuto lo stesso problema e quanto segue ha funzionato:

[line.set_zorder(3) for line in ax.lines]
fig.show() # to update

Aumentare 3a un valore più alto se non funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.