Einführung
In diesem Lab führen wir Sie durch den Prozess der direkten Verwendung des agg-Backends, um Bilder in Python Matplotlib zu erstellen. Das agg-Backend ist für Web-Anwendungsentwickler nützlich, die volle Kontrolle über ihren Code haben möchten, ohne die pyplot-Schnittstelle zum Verwalten von Figuren, Schließen von Figuren usw. zu verwenden. In diesem Lab zeigen wir Ihnen, wie Sie den Inhalt der agg-Canvas in eine Datei speichern und wie Sie ihn in ein numpy-Array extrahieren, das wiederum an Pillow übergeben werden kann.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Erstellen eines Diagramms und einer Zeichenfläche
Zunächst müssen wir ein Diagramm und eine Zeichenfläche erstellen. Das Diagramm definiert die Größe, Form und den Inhalt der Grafik, während die Zeichenfläche der Ort ist, an dem das Diagramm gezeichnet wird.
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
fig = Figure(figsize=(5, 4), dpi=100)
canvas = FigureCanvasAgg(fig)
Hinzufügen von Plotdaten zum Diagramm
Jetzt, nachdem wir ein Diagramm und eine Zeichenfläche haben, können wir einigen Daten zum Plot hinzufügen. In diesem Beispiel fügen wir einen einfachen Linienplot hinzu.
ax = fig.add_subplot()
ax.plot([1, 2, 3])
Speichern des Diagramms in einer Datei
Es gibt zwei Optionen, um den Plot zu speichern. Die erste Option besteht darin, das Diagramm in eine Datei zu speichern. In diesem Beispiel speichern wir den Plot als PNG-Bild.
fig.savefig("test.png")
Extrahieren des Renderer-Puffers zu einem numpy-Array
Die zweite Option, um den Plot zu speichern, besteht darin, den Renderer-Puffer in ein numpy-Array zu extrahieren. Dies ermöglicht es uns, Matplotlib innerhalb eines CGI-Skripts zu verwenden, ohne dass wir ein Diagramm auf die Festplatte schreiben müssen. In diesem Beispiel extrahieren wir den Renderer-Puffer und konvertieren ihn in ein numpy-Array.
import numpy as np
canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())
Speichern des numpy-Arrays als Pillow-Bild
Jetzt, nachdem wir das numpy-Array haben, können wir es an Pillow weitergeben und es im von Pillow unterstützten Format speichern. In diesem Beispiel speichern wir den Plot als BMP-Bild.
from PIL import Image
im = Image.fromarray(rgba)
im.save("test.bmp")
Zusammenfassung
In diesem Lab haben wir Ihnen gezeigt, wie Sie das agg-Backend in Python Matplotlib verwenden, um Bilder zu erstellen. Wir haben ein Diagramm und eine Zeichenfläche erstellt, Daten zum Plot hinzugefügt und den Plot als PNG-Bild gespeichert. Wir haben auch den Renderer-Puffer in ein numpy-Array extrahiert und den Plot mit Pillow als BMP-Bild gespeichert. Diese Techniken sind für Web-Anwendungsentwickler nützlich, die volle Kontrolle über ihren Code haben möchten, ohne die pyplot-Schnittstelle zum Verwalten von Diagrammen, Diagrammschließung usw. zu verwenden.