Noter
Cliquez ici pour télécharger l'exemple de code complet
Démo CanvasAgg #
Cet exemple montre comment utiliser directement le backend agg pour créer des images, ce qui peut être utile aux développeurs d'applications Web qui souhaitent un contrôle total sur leur code sans utiliser l'interface pyplot pour gérer les chiffres, la fermeture des chiffres, etc.
Noter
Il n'est pas nécessaire d'éviter d'utiliser l'interface pyplot pour créer des figures sans interface graphique - il suffit de définir le backend sur "Agg".
Dans cet exemple, nous montrons comment enregistrer le contenu du canevas agg dans un fichier et comment les extraire dans un tableau numpy, qui peut à son tour être transmis à Pillow . Cette dernière fonctionnalité permet par exemple d'utiliser Matplotlib dans un script cgi sans avoir besoin d'écrire une figure sur le disque, et d'écrire des images dans n'importe quel format pris en charge par 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()
Références
L'utilisation des fonctions, méthodes, classes et modules suivants est illustrée dans cet exemple :