Nota
Haga clic aquí para descargar el código de ejemplo completo
Demostración de CanvasAgg #
Este ejemplo muestra cómo usar el backend agg directamente para crear imágenes, que pueden ser útiles para los desarrolladores de aplicaciones web que desean un control total sobre su código sin usar la interfaz pyplot para administrar figuras, cerrar figuras, etc.
Nota
No es necesario evitar el uso de la interfaz pyplot para crear figuras sin un front-end gráfico; bastaría con configurar el backend en "Agg".
En este ejemplo, mostramos cómo guardar el contenido del lienzo agregado en un archivo y cómo extraerlo en una matriz numpy, que a su vez se puede pasar a Pillow . La última funcionalidad permite, por ejemplo, usar Matplotlib dentro de un cgi-script sin necesidad de escribir una figura en el disco y escribir imágenes en cualquier formato compatible con Pillow.
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
import numpy as np
from PIL import Image
fig = Figure(figsize=(5, 4), dpi=100)
# A canvas must be manually attached to the figure (pyplot would automatically
# do it). This is done by instantiating the canvas with the figure as
# argument.
canvas = FigureCanvasAgg(fig)
# Do some plotting.
ax = fig.add_subplot()
ax.plot([1, 2, 3])
# Option 1: Save the figure to a file; can also be a file-like object (BytesIO,
# etc.).
fig.savefig("test.png")
# Option 2: Retrieve a memoryview on the renderer buffer, and convert it to a
# numpy array.
canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())
# ... and pass it to PIL.
im = Image.fromarray(rgba)
# This image can then be saved to any format supported by Pillow, e.g.:
im.save("test.bmp")
# Uncomment this line to display the image using ImageMagick's `display` tool.
# im.show()
Referencias
En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos: