Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Zorder-Demo #
Die Zeichnungsreihenfolge von Künstlern wird durch ihr zorder
Attribut bestimmt, das eine Fließkommazahl ist. Künstler mit höheren zorder
werden oben gezeichnet. Sie können die Reihenfolge für einzelne Künstler ändern, indem Sie ihre zorder
. Der Standardwert hängt vom Typ des Künstlers ab:
Künstler |
Z-Reihenfolge |
---|---|
Bilder ( |
0 |
1 |
|
|
2 |
Große Zecken |
2.01 |
|
3 |
5 |
Jeder Aufruf einer Zeichenmethode kann explizit einen Wert für die zorder dieses bestimmten Elements festlegen.
Notiz
set_axisbelow
und rcParams["axes.axisbelow"]
(Standard: 'line'
) sind praktische Helfer zum Festlegen der Z-Reihenfolge von Ticks und Gitterlinien.
Das Zeichnen erfolgt einzeln Axes
. Wenn Sie überlappende Achsen haben, werden alle Elemente der zweiten Achse auf die erste Achse gezeichnet, unabhängig von ihrer relativen Z-Reihenfolge.
Das folgende Beispiel enthält ein Line2D
erstellt von plot()
und die Punkte (a PatchCollection
) erstellt von scatter()
. Daher befinden sich die Punkte standardmäßig unter der Linie (erster Teilplot). In der zweiten Nebenhandlung zorder
wird explizit so eingestellt, dass die Punkte über der Linie verschoben werden.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))
ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')
ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5) # move dots on top of line
ax2.set_title('Dots on top of lines')
plt.tight_layout()
Viele Funktionen, die ein sichtbares Objekt erstellen, akzeptieren einen zorder
Parameter. Alternativ können Sie set_zorder()
das erstellte Objekt später aufrufen.
x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2) # bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3', zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5) # legend between blue and orange line
plt.show()