Zorder-Demo #

Die Zeichnungsreihenfolge von Künstlern wird durch ihr zorderAttribut bestimmt, das eine Fließkommazahl ist. Künstler mit höheren zorderwerden 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 ( AxesImage, FigureImage, BboxImage)

0

Patch,PatchCollection

1

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

2

Große Zecken

2.01

Text(einschließlich Achsenbeschriftungen und Titel)

3

Legend

5

Jeder Aufruf einer Zeichenmethode kann explizit einen Wert für die zorder dieses bestimmten Elements festlegen.

Notiz

set_axisbelowund 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.

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 Line2Derstellt 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 zorderwird 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()
Linien über Punkten, Punkte über Linien

Viele Funktionen, die ein sichtbares Objekt erstellen, akzeptieren einen zorderParameter. 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()
Benutzerdefinierte Reihenfolge der Elemente

Galerie generiert von Sphinx-Gallery