Matplotlib: dibuja líneas de cuadrícula detrás de otros elementos del gráfico


124

En Matplotlib, hago líneas de cuadrícula discontinuas de la siguiente manera:

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

sin embargo, no puedo averiguar cómo (o incluso si es posible) hacer que las líneas de la cuadrícula se dibujen detrás de otros elementos del gráfico, como barras. Cambiar el orden de agregar la cuadrícula versus agregar otros elementos no hace ninguna diferencia.

¿Es posible hacer que las líneas de la cuadrícula aparezcan detrás de todo lo demás?


10
ax.set_axisbelow(True)todavía funciona. También es bueno para la salida en pdf ...
BandGap

5
Hubiera esperado ax.set_axisbelow(True)ser el predeterminado ...
PatrickT

Respuestas:


122

De acuerdo con esto, http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html , puede usarAxis.set_axisbelow(True)

(Actualmente estoy instalando matplotlib por primera vez, así que no tengo idea de si eso es correcto - lo encontré buscando en Google "matplotlib z order grid" - "z order" se usa típicamente para describir este tipo de cosas (siendo z el eje "fuera de la página"))


¿Es posible tener las líneas de cuadrícula debajo de la barra / línea mientras se mantienen las etiquetas en la parte superior? También publiqué esta pregunta por separado stackoverflow.com/questions/29522447/…
joelostblom

Podría ser este matplotlib.1069221.n5.nabble.com/… , aunque es un hilo antiguo.
Jacques Kvam

86

Para mí, no estaba claro cómo aplicar la respuesta de Andrew Cooke, por lo que esta es una solución completa basada en eso:

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

34

Si desea validar la configuración para todas las cifras, puede configurar

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

o

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

Funciona para Matplotlib> = 2.0.


8

Tuve el mismo problema y funcionó lo siguiente:

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

Aumente 3a un valor más alto si no funciona.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.