Vektorgrafik-Rasterisierung mit Python

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 werden Sie sich mit der Rasterisierung von Vektorgrafiken befassen. Rasterisierung ist der Prozess der Umwandlung von Vektorgrafiken in ein Rasterbild (Pixel). Dies kann die Rendering-Geschwindigkeit erhöhen und kleinere Dateien für große Datensätze erzeugen, hat jedoch den Nachteil einer festen Auflösung. Wir werden die Python-Bibliothek Matplotlib verwenden, um das Konzept der Rasterisierung zu veranschaulichen.

Tipps für die virtuelle Maschine (VM)

Nachdem die VM gestartet wurde, klicken Sie in der oberen linken Ecke auf die Registerkarte Notebook, um auf Jupyter Notebook für die Übung zuzugreifen.

Manchmal müssen Sie möglicherweise einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Aufgrund von Einschränkungen in Jupyter Notebook kann die Validierung von Operationen nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie sich gerne an Labby wenden. Geben Sie uns nach der Sitzung Feedback, und wir werden das Problem umgehend für Sie lösen.

Bibliotheken importieren

Wir müssen die erforderlichen Bibliotheken importieren, bevor wir beginnen.

import matplotlib.pyplot as plt
import numpy as np

Daten erstellen

Wir werden einige Daten erstellen, die verwendet werden, um das Konzept der Rasterisierung zu veranschaulichen.

d = np.arange(100).reshape(10, 10)  ## the values to be color-mapped
x, y = np.meshgrid(np.arange(11), np.arange(11))

theta = 0.25*np.pi
xx = x*np.cos(theta) - y*np.sin(theta)  ## rotate x by -theta
yy = x*np.sin(theta) + y*np.cos(theta)  ## rotate y by -theta

Eine Abbildung mit vier Teilplots erstellen

Wir werden eine Abbildung mit vier Teilplots erstellen, um verschiedene Aspekte der Rasterisierung zu veranschaulichen.

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, layout="constrained")

Ein pcolormesh-Diagramm ohne Rasterisierung erstellen

Wir werden ein pcolormesh-Diagramm ohne Rasterisierung erstellen, um den Unterschied zwischen Rasterisierung und Nicht-Rasterisierung zu veranschaulichen.

ax1.set_aspect(1)
ax1.pcolormesh(xx, yy, d)
ax1.set_title("No Rasterization")

Ein pcolormesh-Diagramm mit Rasterisierung erstellen

Wir werden ein pcolormesh-Diagramm mit Rasterisierung erstellen, um zu veranschaulichen, wie die Rasterisierung die Rendering-Geschwindigkeit erhöhen und kleinere Dateien erzeugen kann.

ax2.set_aspect(1)
ax2.set_title("Rasterization")
ax2.pcolormesh(xx, yy, d, rasterized=True)

Ein pcolormesh-Diagramm mit einem überlagerten Text ohne Rasterisierung erstellen

Wir werden ein pcolormesh-Diagramm mit einem überlagerten Text ohne Rasterisierung erstellen, um zu veranschaulichen, wie Vektorgrafiken für einige Künstler, wie z. B. Achsen und Text, die Vorteile von Vektorgrafiken beibehalten können.

ax3.set_aspect(1)
ax3.pcolormesh(xx, yy, d)
ax3.text(0.5, 0.5, "Text", alpha=0.2,
         va="center", ha="center", size=50, transform=ax3.transAxes)
ax3.set_title("No Rasterization")

Ein pcolormesh-Diagramm mit einem überlagerten Text mit Rasterisierung erstellen

Wir werden ein pcolormesh-Diagramm mit einem überlagerten Text mit Rasterisierung erstellen, um zu veranschaulichen, wie die Rasterisierung es Vektorgrafiken ermöglicht, die Vorteile von Vektorgrafiken für einige Künstler wie die Achsen und den Text beizubehalten.

ax4.set_aspect(1)
m = ax4.pcolormesh(xx, yy, d, zorder=-10)
ax4.text(0.5, 0.5, "Text", alpha=0.2,
         va="center", ha="center", size=50, transform=ax4.transAxes)
ax4.set_rasterization_zorder(0)
ax4.set_title("Rasterization z$<-10$")

Die Diagramme speichern

Wir werden die Diagramme im PDF- und EPS-Format speichern.

plt.savefig("test_rasterization.pdf", dpi=150)
plt.savefig("test_rasterization.eps", dpi=150)

if not plt.rcParams["text.usetex"]:
    plt.savefig("test_rasterization.svg", dpi=150)
    ## svg backend currently ignores the dpi

Zusammenfassung

In diesem Lab haben wir uns mit der Rasterisierung von Vektorgrafiken beschäftigt. Wir haben die Python-Bibliothek Matplotlib verwendet, um das Konzept der Rasterisierung zu veranschaulichen. Wir haben eine Abbildung mit vier Teilplots erstellt, um die verschiedenen Aspekte der Rasterisierung zu veranschaulichen. Wir haben auch gelernt, wie die Rasterisierung die Rendering-Geschwindigkeit erhöhen und kleinere Dateien für große Datensätze erzeugen kann, dies jedoch auf Kosten einer festen Auflösung geht. Wir haben auch gelernt, wie die Rasterisierung es Vektorgrafiken ermöglicht, die Vorteile von Vektorgrafiken für einige Künstler wie die Achsen und den Text beizubehalten.