Uso del backend agg de Matplotlib para la generación de imágenes

Beginner

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

Introducción

Esta práctica te guiará a través del proceso de utilizar directamente el backend agg para crear imágenes en Python Matplotlib. El backend agg es útil para los desarrolladores de aplicaciones web que deseen tener un control total sobre su código sin utilizar la interfaz pyplot para administrar figuras, cerrar figuras, etc. En esta práctica, te mostraremos cómo guardar el contenido de la superficie agg en un archivo y cómo extraerlo a una matriz numpy, que a su vez puede ser pasada a Pillow.

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 cargar. La validación de las operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si te encuentras con 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.

Crear una Figura y un lienzo

En primer lugar, necesitamos crear una Figura y un lienzo. La Figura define el tamaño, la forma y el contenido de la trama, mientras que el lienzo es donde se dibuja la Figura.

from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure

fig = Figure(figsize=(5, 4), dpi=100)
canvas = FigureCanvasAgg(fig)

Agregar datos de trazado a la Figura

Ahora que tenemos una Figura y un lienzo, podemos agregar algunos datos a la trama. En este ejemplo, agregaremos un trazado de línea simple.

ax = fig.add_subplot()
ax.plot([1, 2, 3])

Guardar la Figura en un archivo

Hay dos opciones para guardar la trama. La primera opción es guardar la Figura en un archivo. En este ejemplo, guardaremos la trama como una imagen PNG.

fig.savefig("test.png")

Extraer el búfer del renderizador a una matriz de numpy

La segunda opción para guardar la trama es extraer el búfer del renderizador a una matriz de numpy. Esto nos permite utilizar Matplotlib dentro de un script cgi sin necesidad de escribir una figura en el disco. En este ejemplo, extraeremos el búfer del renderizador y lo convertiremos en una matriz de numpy.

import numpy as np

canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())

Guardar la matriz de numpy en una imagen de Pillow

Ahora que tenemos la matriz de numpy, podemos pasarla a Pillow y guardarla en cualquier formato admitido por Pillow. En este ejemplo, guardaremos la trama como una imagen BMP.

from PIL import Image

im = Image.fromarray(rgba)
im.save("test.bmp")

Resumen

En este laboratorio, te mostramos cómo usar el backend agg en Matplotlib de Python para crear imágenes. Creamos una Figura y un lienzo, agregamos datos a la trama y guardamos la trama como una imagen PNG. También extrajimos el búfer del renderizador a una matriz de numpy y guardamos la trama como una imagen BMP usando Pillow. Estas técnicas son útiles para los desarrolladores de aplicaciones web que deseen tener un control total sobre su código sin usar la interfaz de pyplot para administrar figuras, cerrar figuras, etc.