Das Verwenden des Matplotlib Agg-Backends zur Bildgenerierung

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.