¿Es posible establecer un índice z más alto de las tags del eje?

En las siguientes tags de código del eje se ocultan detrás de las líneas del gráfico:

import numpy as np import matplotlib.pyplot as plt X = np.linspace(-np.pi, np.pi, 256, endpoint=True) C,S = np.cos(X), np.sin(X) plt.plot(X,C) plt.plot(X,S) plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) for label in ax.get_xticklabels() + ax.get_yticklabels(): label.set_fontsize(14) label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.75 )) plt.show() 

cos / sin

Puedes ver que, por ejemplo, -pi es difícil de ver. ¿Hay una manera de poner tags de eje por delante?

Hay un rcParameter axes.axisbelow que dirige exactamente este comportamiento:

axes.axisbelow : dibujar líneas de cuadrícula de eje y garrapatas

  • debajo de los parches (Verdadero);
  • encima de los parches pero debajo de las líneas (‘línea’);
  • o sobre todo (falso)

Si te pones

 plt.rcParams["axes.axisbelow"] = False 

en la parte superior de la secuencia de comandos, las líneas de la cuadrícula y la marca (etiqueta) se dibujan sobre todo lo demás. El resultado se vería entonces como

introduzca la descripción de la imagen aquí

Aunque la respuesta de Ernest es muy útil, me parece que la interfaz de rcParams un poco torpe. Afortunadamente, puede establecer la opción axisbelow directamente en los ejes con el método set_axisbelow() . Aquí está la versión parcheada de su código.

 import numpy as np import matplotlib.pyplot as plt X = np.linspace(-np.pi, np.pi, 256, endpoint=True) C,S = np.cos(X), np.sin(X) plt.plot(X,C) plt.plot(X,S) plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) ax.set_axisbelow(False) # <-- added for label in ax.get_xticklabels() + ax.get_yticklabels(): label.set_fontsize(14) label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.75 )) plt.show() 

Ahora el argumento parece que el tutorial de Nicolas P. Rougier dice que debería:

Parcela fija con fondo blanco para etiquetas de garrapatas.