Matplotlib: Zeichnen Sie Gitterlinien hinter anderen Diagrammelementen


123

In Matplotlib mache ich gestrichelte Gitterlinien wie folgt:

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

Ich kann jedoch nicht herausfinden, wie (oder ob es möglich ist), die Gitterlinien hinter anderen Diagrammelementen wie Balken zu zeichnen. Das Ändern der Reihenfolge des Hinzufügens des Rasters im Vergleich zum Hinzufügen anderer Elemente macht keinen Unterschied.

Ist es möglich, es so zu gestalten, dass die Gitterlinien hinter allem anderen erscheinen?


10
ax.set_axisbelow(True)funktioniert noch. Auch schön für PDF-Ausgabe ...
BandGap

5
Ich hätte erwartet ax.set_axisbelow(True), die Standardeinstellung zu sein ...
PatrickT

Antworten:


122

Demnach können Sie - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - verwendenAxis.set_axisbelow(True)

(Ich installiere derzeit Matplotlib zum ersten Mal, habe also keine Ahnung, ob das richtig ist. Ich habe es gerade durch Googeln von "matplotlib z order grid" gefunden. "Z order" wird normalerweise verwendet, um diese Art von Dingen zu beschreiben (z ist die Achse "out of the page"))


Ist es möglich, die Gitterlinien unter dem Balken / der Linie zu haben, während die Beschriftungen oben bleiben? Ich habe diese Frage auch separat gestapelt stackoverflow.com/questions/29522447/…
joelostblom

Es könnte sich jedoch um diesen matplotlib.1069221.n5.nabble.com/… handeln , einen alten Thread.
Jacques Kvam

85

Für mich war unklar, wie man die Antwort von Andrew Cooke anwendet, daher ist dies eine vollständige Lösung, die darauf basiert:

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

34

Wenn Sie die Einstellung für alle Figuren validieren möchten , können Sie sie einstellen

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

oder

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

Es funktioniert für Matplotlib> = 2.0.


8

Ich hatte das gleiche Problem und Folgendes funktionierte:

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

Erhöhen Sie 3auf einen höheren Wert, wenn es nicht funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.