Graficando imágenes no uniformes 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

Esta práctica proporciona una guía paso a paso sobre cómo utilizar la clase NonUniformImage de la biblioteca Matplotlib de Python. NonUniformImage permite a los usuarios trazar imágenes con posiciones de píxeles no uniformes.

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 crear una NonUniformImage, necesitamos importar las bibliotecas necesarias. En este ejemplo, usaremos numpy y matplotlib.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.image import NonUniformImage

Crear matrices lineales y no lineales

Necesitamos crear dos matrices, una con valores lineales y otra con valores no lineales. Estas matrices se usarán para crear nuestra NonUniformImage.

## Matriz x lineal para los centros de las celdas:
x = np.linspace(-4, 4, 9)

## Matriz x altamente no lineal:
x2 = x**3

y = np.linspace(-4, 4, 9)

z = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)

Crear subtramas y NonUniformImage

Ahora, creamos subtramas y agregamos la NonUniformImage a cada una de ellas. Crearemos cuatro subtramas, dos con interpolación 'nearest' y dos con interpolación 'bilinear'. El argumento de palabras clave de interpolación define el tipo de interpolación utilizado para mostrar la imagen.

## Crear subtramas
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
fig.suptitle('NonUniformImage class', fontsize='large')

## Interpolación Nearest
ax = axs[0, 0]
im = NonUniformImage(ax, interpolation='nearest', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

ax = axs[0, 1]
im = NonUniformImage(ax, interpolation='nearest', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

## Interpolación Bilinear
ax = axs[1, 0]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

ax = axs[1, 1]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

plt.show()

Interpretación de los resultados

Las subtramas mostrarán dos tipos diferentes de interpolación, 'nearest' y 'bilinear'. La interpolación 'nearest' mostrará el valor del píxel del vecino más cercano, mientras que la interpolación 'bilinear' mostrará el promedio ponderado de los cuatro vecinos más cercanos.

Resumen

NonUniformImage es una herramienta útil para trazar imágenes con posiciones de píxeles no uniformes. Esta práctica proporcionó una guía paso a paso sobre cómo usar NonUniformImage en la biblioteca Matplotlib de Python, incluyendo la importación de las bibliotecas necesarias, la creación de matrices lineales y no lineales, la creación de subtramas y NonUniformImage y la interpretación de los resultados.