Visualización con Matplotlib utilizando colecciones

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

Este tutorial te guiará a través de la creación de una visualización utilizando la colección de Matplotlib. El tutorial te mostrará cómo utilizar LineCollection, PolyCollection y RegularPolyCollection. El tutorial también te mostrará cómo utilizar los argumentos de palabras clave de desplazamiento y offset_transform de LineCollection y PolyCollection para establecer las posiciones de las hélices. El tutorial también te mostrará cómo utilizar RegularPolyCollection para crear polígonos regulares.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz 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 tengas 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 tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y te resolveremos el problema inmediatamente.

Importar las bibliotecas necesarias

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import collections, transforms

El primer paso es importar las bibliotecas necesarias. Para este tutorial utilizaremos Matplotlib y Numpy.

Crear hélices

nverts = 50
npts = 100

## Hacer algunas hélices
r = np.arange(nverts)
theta = np.linspace(0, 2*np.pi, nverts)
xx = r * np.sin(theta)
yy = r * np.cos(theta)
spiral = np.column_stack([xx, yy])

El siguiente paso es crear hélices utilizando Numpy. Utilizaremos las funciones seno y coseno para crear las hélices.

Crear desplazamientos

## Fijando el estado aleatorio para la reproducibilidad
rs = np.random.RandomState(19680801)

## Hacer algunos desplazamientos
xyo = rs.randn(npts, 2)

El tercer paso es crear desplazamientos utilizando Numpy. Utilizaremos la función aleatoria para crear los desplazamientos.

Crear LineCollection utilizando desplazamientos

col = collections.LineCollection(
    [spiral], offsets=xyo, offset_transform=ax1.transData)
trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
col.set_transform(trans)
col.set_color(colors)

ax1.add_collection(col, autolim=True)
ax1.autoscale_view()

ax1.set_title('LineCollection using offsets')

El cuarto paso es crear una LineCollection utilizando desplazamientos. Utilizaremos la LineCollection para crear curvas con desplazamientos. También utilizaremos el offset_transform para establecer las posiciones de las curvas.

Crear PolyCollection utilizando desplazamientos

col = collections.PolyCollection(
    [spiral], offsets=xyo, offset_transform=ax2.transData)
trans = transforms.Affine2D().scale(fig.dpi/72.0)
col.set_transform(trans)
col.set_color(colors)

ax2.add_collection(col, autolim=True)
ax2.autoscale_view()

ax2.set_title('PolyCollection using offsets')

El quinto paso es crear una PolyCollection utilizando desplazamientos. Utilizaremos la PolyCollection para llenar las curvas con colores. También utilizaremos el offset_transform para establecer las posiciones de las curvas.

Crear RegularPolyCollection utilizando desplazamientos

col = collections.RegularPolyCollection(
    7, sizes=np.abs(xx) * 10.0, offsets=xyo, offset_transform=ax3.transData)
trans = transforms.Affine2D().scale(fig.dpi / 72.0)
col.set_transform(trans)
col.set_color(colors)

ax3.add_collection(col, autolim=True)
ax3.autoscale_view()

ax3.set_title('RegularPolyCollection using offsets')

El sexto paso es crear una RegularPolyCollection utilizando desplazamientos. Utilizaremos la RegularPolyCollection para crear polígonos regulares con desplazamientos. También utilizaremos el offset_transform para establecer las posiciones de los polígonos.

Crear desplazamientos sucesivos de datos

## Simular una serie de perfiles de corrientes oceánicas, sucesivamente
## desplazados en 0.1 m/s de modo que formen lo que a veces se llama
## una gráfica de "cascada" o una gráfica de "desplazamiento".

nverts = 60
ncurves = 20
offs = (0.1, 0.0)

yy = np.linspace(0, 2*np.pi, nverts)
ym = np.max(yy)
xx = (0.2 + (ym - yy) / ym) ** 2 * np.cos(yy - 0.4) * 0.5
segs = []
for i in range(ncurves):
    xxx = xx + 0.02*rs.randn(nverts)
    curve = np.column_stack([xxx, yy * 100])
    segs.append(curve)

col = collections.LineCollection(segs, offsets=offs)
ax4.add_collection(col, autolim=True)
col.set_color(colors)
ax4.autoscale_view()

ax4.set_title('Successive data offsets')
ax4.set_xlabel('Zonal velocity component (m/s)')
ax4.set_ylabel('Depth (m)')
ax4.set_ylim(ax4.get_ylim()[::-1])

El séptimo paso es crear desplazamientos sucesivos de datos. Utilizaremos la LineCollection para crear curvas con desplazamientos sucesivos.

Resumen

Este tutorial te ha mostrado cómo utilizar la colección de Matplotlib para crear visualizaciones. Has aprendido cómo utilizar LineCollection, PolyCollection y RegularPolyCollection para crear curvas y polígonos. También has aprendido cómo utilizar los argumentos de palabras clave offsets y offset_transform de LineCollection y PolyCollection para establecer las posiciones de las hélices.