Nota
Fare clic qui per scaricare il codice di esempio completo
Zorder Demo #
L'ordine di disegno degli artisti è determinato dal loro zorder
attributo, che è un numero in virgola mobile. Gli artisti con più alto zorder
sono disegnati in cima. Puoi modificare l'ordine dei singoli artisti impostando i loro file zorder
. Il valore predefinito dipende dal tipo di Artista:
Artista |
Ordine Z |
---|---|
Immagini ( |
0 |
1 |
|
|
2 |
Zecche principali |
2.01 |
|
3 |
5 |
Qualsiasi chiamata a un metodo di tracciamento può impostare esplicitamente un valore per lo zorder di quel particolare elemento.
Nota
set_axisbelow
e rcParams["axes.axisbelow"]
(predefinito: 'line'
) sono utili aiutanti per impostare l'ordine z delle tacche e delle linee della griglia.
Il disegno viene eseguito per Axes
volta. Se hai Assi sovrapposti, tutti gli elementi del secondo Asse vengono disegnati sopra il primo Asse, indipendentemente dal loro relativo zorder.
L'esempio seguente contiene un Line2D
creato da plot()
e i punti (a PatchCollection
) creati da scatter()
. Quindi, per impostazione predefinita, i punti sono sotto la linea (prima sottotrama). Nella seconda sottotrama, zorder
è impostato esplicitamente per spostare i punti in cima alla linea.
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()
Molte funzioni che creano un oggetto visibile accettano un zorder
parametro. In alternativa, puoi richiamare set_zorder()
l'oggetto creato in un secondo momento.
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()