Zorder Demo#

Die Zeichenreihenfolge von Künstlern wird durch ihr zorder-Attribut bestimmt, das eine Fließkommazahl ist. Künstler mit höherem zorder werden oben gezeichnet. Sie können die Reihenfolge für einzelne Künstler ändern, indem Sie ihr zorder setzen. Der Standardwert hängt vom Typ des Künstlers ab

Artist

Z-Reihenfolge

Bilder (AxesImage, FigureImage, BboxImage)

0

Patch, PatchCollection

1

Line2D, LineCollection (einschließlich kleiner Ticks, Gitterlinien)

2

Haupt-Ticks

2.01

Text (einschließlich Achsenbeschriftungen und Titel)

3

Legende

5

Jeder Aufruf einer Plotting-Methode kann explizit einen Wert für die Z-Reihenfolge dieses speziellen Elements festlegen.

Hinweis

set_axisbelow und rcParams["axes.axisbelow"] (Standard: 'line') sind praktische Hilfsmittel zum Einstellen der Z-Reihenfolge von Ticks und Gitterlinien.

Die Zeichnung erfolgt Achsenweise. Wenn Sie überlappende Achsen haben, werden alle Elemente der zweiten Achse über der ersten Achse gezeichnet, unabhängig von ihrer relativen Z-Reihenfolge.

import matplotlib.pyplot as plt
import numpy as np

r = np.linspace(0.3, 1, 30)
theta = np.linspace(0, 4*np.pi, 30)
x = r * np.sin(theta)
y = r * np.cos(theta)

Das folgende Beispiel enthält ein Line2D, das von plot() erstellt wurde, und die Punkte (ein PatchCollection), die von scatter() erstellt wurden. Daher sind die Punkte standardmäßig unter der Linie (erster Subplot). Im zweiten Subplot wird der zorder explizit gesetzt, um die Punkte über die Linie zu verschieben.

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()
Lines on top of dots, Dots on top of lines

Viele Funktionen, die ein sichtbares Objekt erstellen, akzeptieren einen zorder-Parameter. Alternativ können Sie später set_zorder() auf dem erstellten Objekt 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()
Custom order of elements

Gesamte Laufzeit des Skripts: (0 Minuten 1,185 Sekunden)

Galerie generiert von Sphinx-Gallery