Demostración de Zorder #

El orden de dibujo de los artistas está determinado por su zorderatributo, que es un número de coma flotante. Los artistas con más alto zorderse 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 ( AxesImage, FigureImage, BboxImage)

0

Patch,PatchCollection

1

Line2D, LineCollection(incluidos ticks menores, líneas de cuadrícula)

2

Mayores garrapatas

2.01

Text(incluidas las etiquetas y los títulos de los ejes)

3

Legend

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_axisbelowy 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 Axesa 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.

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)

El siguiente ejemplo contiene un Line2Dcreado 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, zorderse 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()
Líneas sobre puntos, Puntos sobre líneas

Muchas funciones que crean un objeto visible aceptan un zorderpará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()
Orden personalizado de elementos

Galería generada por Sphinx-Gallery