Dibujo de líneas eficiente con Matplotlib

PythonPythonBeginner
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 a usar la función LineCollection en Matplotlib para dibujar eficientemente múltiples líneas a la vez. Veremos cómo trazar múltiples líneas con diferentes colores y estilos, y cómo usar una matriz enmascarada para enmascarar algunos valores. También aprenderemos a usar la función ScalarMappable.set_array para mapear una matriz de valores a colores.

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 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 sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas

Antes de comenzar, necesitamos importar las bibliotecas necesarias. Usaremos matplotlib.pyplot y numpy.

import matplotlib.pyplot as plt
import numpy as np

Crear datos

A continuación, necesitamos crear los datos que usaremos para trazar las líneas. Usaremos numpy para crear una matriz bidimensional de valores de x e y.

x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]

Crear una colección de líneas

Ahora, podemos crear un objeto LineCollection con la función LineCollection. Podemos establecer los parámetros linewidths, colors y linestyle para personalizar la apariencia de las líneas.

colors = plt.rcParams['axes.prop_cycle'].by_key()['color']

segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x

segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)

line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
                               colors=colors, linestyle='solid')

Crear la gráfica

Ahora podemos crear una gráfica usando matplotlib y agregar el objeto LineCollection a la gráfica usando el método add_collection del objeto Axes.

fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())

ax.add_collection(line_segments)
ax.set_title('Line collection with masked arrays')
plt.show()

Asignar colores a valores

También podemos asignar un array de valores a colores usando la función ScalarMappable.set_array. Crearemos un nuevo conjunto de datos y un nuevo objeto LineCollection con el parámetro array establecido en los valores de x. Luego podemos usar el método colorbar del objeto Figure para agregar una barra de colores a la gráfica.

N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]

fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))

line_segments = LineCollection(segs, array=x,
                               linewidths=(0.5, 1, 1.5, 2),
                               linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('Line Collection with mapped colors')
plt.sci(line_segments)
plt.show()

Resumen

En este tutorial, aprendimos cómo usar la función LineCollection en Matplotlib para dibujar eficientemente múltiples líneas a la vez. Vimos cómo trazar múltiples líneas con diferentes colores y estilos, y cómo usar una matriz enmascarada para enmascarar algunos valores. También aprendimos cómo usar la función ScalarMappable.set_array para asignar un array de valores a colores.