Ajustando el orden de dibujo de Matplotlib

MatplotlibMatplotlibBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este tutorial, aprenderemos sobre el orden de dibujo de los artistas en Matplotlib y cómo ajustar el orden utilizando el atributo zorder. También exploraremos cómo cambiar el orden para artistas individuales y el valor predeterminado de zorder para diferentes tipos de artistas.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos el problema para usted de inmediato.

Comprendiendo zorder

El atributo zorder en Matplotlib es un número de punto flotante que determina el orden de dibujo de los artistas. Los artistas con un zorder más alto se dibujan encima de aquellos con un zorder más bajo. El valor predeterminado de zorder depende del tipo de artista. Por ejemplo, las imágenes tienen un zorder predeterminado de 0, mientras que los parches tienen un zorder predeterminado de 1.

Cambiando zorder

Para cambiar el orden de dibujo de los artistas, podemos establecer su atributo zorder explícitamente utilizando el parámetro zorder al crear el artista. Por ejemplo, podemos mover los puntos encima de las líneas en un diagrama de dispersión estableciendo el zorder de los puntos en un valor mayor que el zorder de la línea.

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)

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()
plt.show()

Estableciendo zorder para las marcas de graduación y las líneas de cuadrícula

Podemos utilizar el método set_axisbelow() o el parámetro axes.axisbelow para establecer el zorder de las marcas de graduación y las líneas de cuadrícula.

ax = plt.axes()
ax.plot([1, 2, 3], [2, 4, 3])
ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

Orden personalizado de los elementos

También podemos establecer el zorder de los elementos en un orden personalizado. Por ejemplo, podemos establecer el zorder de una leyenda para que quede entre dos líneas.

import matplotlib.pyplot as plt
import numpy as np

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()

Resumen

En este tutorial, aprendimos sobre el atributo zorder en Matplotlib y cómo cambiar el orden de dibujo de los artistas. También exploramos cómo establecer el zorder para las marcas de graduación y las líneas de cuadrícula y crear un orden personalizado de los elementos. Comprender zorder es esencial al crear visualizaciones complejas con elementos superpuestos.