Nota
Haga clic aquí para descargar el código de ejemplo completo
Demostración de Zorder #
El orden de dibujo de los artistas está determinado por su zorder
atributo, que es un número de coma flotante. Los artistas con más alto zorder
se dibujan en la parte superior. Puede cambiar el orden de los artistas individuales configurando su zorder
. El valor predeterminado depende del tipo de artista:
Artista |
Orden Z |
---|---|
Imágenes ( |
0 |
1 |
|
|
2 |
Mayores garrapatas |
2.01 |
|
3 |
5 |
Cualquier llamada a un método de trazado puede establecer explícitamente un valor para el zorder de ese elemento en particular.
Nota
set_axisbelow
y rcParams["axes.axisbelow"]
(predeterminado: 'line'
) son ayudantes convenientes para configurar el zorder de las marcas y las líneas de cuadrícula.
El dibujo se hace por Axes
a la vez. Si tiene ejes superpuestos, todos los elementos de los segundos ejes se dibujan encima de los primeros ejes, independientemente de su zorder relativo.
El siguiente ejemplo contiene un Line2D
creado por plot()
y los puntos (a PatchCollection
) creado por scatter()
. Por lo tanto, por defecto, los puntos están debajo de la línea (primera subparcela). En la segunda subtrama, zorder
se establece explícitamente para mover los puntos en la parte superior de la línea.
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()
Muchas funciones que crean un objeto visible aceptan un zorder
parámetro. Alternativamente, puede llamar set_zorder()
al objeto creado más tarde.
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()