En matplotlib, ¿hay una manera de establecer líneas de cuadrícula debajo de barras / líneas / parches manteniendo las marcas de verificación arriba?

Relacionado con Matplotlib: dibujar líneas de cuadrícula detrás de otros elementos del gráfico , pero nada de eso funcionó para mí.

Tengo la siguiente gráfica donde quiero ocultar las líneas de la cuadrícula debajo de la línea roja mientras conservo las tags en la parte superior de la línea roja:

import numpy as np import matplotlib.pyplot as plt #plot r = np.arange(0, 3.0, 0.01) theta = 2 * np.pi * r ax = plt.subplot(111, polar=True) ax.plot(theta, r, color='r', linewidth=20) ax.set_rmax(2.0) ax.grid(True, lw=2) #set labels label_pos = np.linspace(0.0, 2 * np.pi, 6, endpoint=False) ax.set_xticks(label_pos) label_cols = ['Label ' + str(num) for num in np.arange(6)] ax.set_xticklabels(label_cols, size=24) 

introduzca la descripción de la imagen aquí

Puedo obtener la línea roja en la parte superior con ax.set_axisbelow(True) .

introduzca la descripción de la imagen aquí

    Pero no puedo encontrar una manera de mantener la línea roja en la parte superior de las líneas de cuadrícula mientras se mantienen las tags en la parte superior de la línea roja. Al agregar zorder=-1 al comando plot, coloca la línea roja en la parte inferior, incluso si agrego ax.set_axisbelow(True) . ax.set_zorder(-1)) tampoco ha funcionado hasta ahora.

    ¿Cómo puedo obtener las líneas de la cuadrícula en la parte inferior (zorder más bajo) seguido de la línea roja y luego las tags en la parte superior de la línea roja?

    Siempre puedes trazar la cuadrícula manualmente:

     import numpy as np import matplotlib.pyplot as plt #plot r = np.arange(0, 3.0, 0.01) theta = 2 * np.pi * r rmax = 2.0 n_th = 6 th_pos = np.linspace(0.0, 2 * np.pi, n_th, endpoint=False) n_r = 5 r_pos = np.linspace(0, rmax, n_r) ax = plt.subplot(111, polar=True) ## Plot the grid for pos in th_pos: ax.plot([th_pos]*2, [0, rmax], 'k:', lw=2) for pos in r_pos[1:-1]: x = np.linspace(0, 2*np.pi, 50) y = np.zeros(50)+pos ax.plot(x, y, 'k:', lw=2) ## Plot your data ax.plot(theta, r, color='r', linewidth=20) ax.set_rmax(rmax) ax.grid(False) #set ticks and labels ax.set_xticks(th_pos) label_cols = ['Label ' + str(num) for num in np.arange(n_th)] ax.set_xticklabels(label_cols, size=24) ax.set_yticks(r_pos[1:]) plt.show() 

    introduzca la descripción de la imagen aquí