Matplotlib: dessinez des lignes de grille derrière d'autres éléments de graphique
dans Matplotlib, je fais des lignes pointillées de grille comme suit:
fig = pylab.figure()
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')
cependant, je ne peux pas savoir comment (ou même si c'est possible) faire les lignes de grille être dessinées derrière d'autres éléments de graphe, tels que des barres. Changer l'ordre d'ajout de la grille par rapport à l'ajout d'autres éléments ne fait aucune différence.
est-il possible de faire en sorte que les lignes de grille apparaissent derrière tout le reste?
4 réponses
selon ce - http://old.nabble.com/axis-elements-and-zorder-td6119088.html - vous pouvez utiliser Axis.set_axisbelow(True)
(je suis en train d'installer matplotlib pour la première fois, donc n'ai aucune idée si c'est correct - je viens de le trouver en googlant "matplotlib z order grid" - "z order" est généralement utilisé pour décrire ce genre de chose (z étant l'axe "hors de la page"))
pour moi, il n'était pas clair comment appliquer la réponse d'andrew cooke, donc c'est une solution complète basée sur cela:
ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')
si vous voulez valider le paramètre pour tous figures, vous pouvez définir
plt.rc('axes', axisbelow=True)
ou
plt.rcParams['axes.axisbelow'] = True
cela fonctionne pour Matplotlib>=2.0.
j'ai eu le même problème et la suivante a fonctionné:
[line.set_zorder(3) for line in ax.lines]
fig.show() # to update
Augmenter 3
à une valeur plus élevée si cela ne fonctionne pas.