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.