Hinweis
Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen.
CanvasAgg Demo#
Dieses Beispiel zeigt, wie das Agg-Backend direkt zum Erstellen von Bildern verwendet wird. Dies kann für Entwickler von Webanwendungen nützlich sein, die die volle Kontrolle über ihren Code wünschen, ohne die Pyplot-Schnittstelle zur Verwaltung von Figuren, zum Schließen von Figuren usw. zu verwenden.
Hinweis
Es ist nicht notwendig, die Pyplot-Schnittstelle zu vermeiden, um Figuren ohne grafisches Frontend zu erstellen - die Einstellung des Backends auf "Agg" wäre ausreichend.
In diesem Beispiel zeigen wir, wie der Inhalt der Agg-Leinwand in eine Datei gespeichert und wie er in ein NumPy-Array extrahiert wird, das wiederum an Pillow übergeben werden kann. Letztere Funktionalität ermöglicht es z. B., Matplotlib innerhalb eines CGI-Skripts zu verwenden, *ohne* eine Figur auf die Festplatte schreiben zu müssen, und Bilder in jedem von Pillow unterstützten Format zu schreiben.
from PIL import Image
import numpy as np
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
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()
Referenzen
Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt