Rasterung für Vektorgrafiken #

Rasterung wandelt Vektorgrafiken in ein Rasterbild (Pixel) um. Es kann das Rendern beschleunigen und kleinere Dateien für große Datensätze erzeugen, geht aber auf Kosten einer festen Auflösung.

Ob eine Rasterung verwendet werden soll, kann pro Künstler festgelegt werden. Dies kann nützlich sein, um die Dateigröße großer Künstler zu reduzieren, während die Vorteile von Vektorgrafiken für andere Künstler wie Achsen und Text erhalten bleiben. Beispielsweise kann ein kompliziertes pcolormeshoder contourfdurch Rastern wesentlich vereinfacht werden. Das Festlegen der Rasterung wirkt sich nur auf Vektor-Backends wie PDF, SVG oder PS aus.

Die Rasterung ist standardmäßig deaktiviert. Es gibt zwei Möglichkeiten, es zu aktivieren, die auch kombiniert werden können:

  • Legen Sie einzelne Künstler fest oder verwenden Sie das gerasterteset_rasterized Schlüsselwortargument beim Erstellen des Künstlers.

  • Axes.set_rasterization_zorderLegt fest, dass alle Künstler mit einer Zorder kleiner als der angegebene Wert gerastert werden .

Die Speichergröße und die Auflösung des gerasterten Künstlers wird durch seine physische Größe und den Wert des dpian übergebenen Parameters bestimmt savefig.

Notiz

Das in der HTML-Dokumentation gezeigte Bild dieses Beispiels ist keine Vektorgrafik. Daher kann es den Rasterisierungseffekt nicht veranschaulichen. Bitte führen Sie dieses Beispiel lokal aus und überprüfen Sie die generierten Grafikdateien.

import numpy as np
import matplotlib.pyplot as plt

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

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, constrained_layout=True)

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

# pcolormesh with rasterization; enabled by keyword argument
ax2.set_aspect(1)
ax2.set_title("Rasterization")
m = ax2.pcolormesh(xx, yy, d, rasterized=True)

# pcolormesh with an overlaid text without rasterization
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")

# pcolormesh with an overlaid text without rasterization; enabled by zorder.
# Setting the rasterization zorder threshold to 0 and a negative zorder on the
# pcolormesh rasterizes it. All artists have a non-negative zorder by default,
# so they (e.g. the text here) are not affected.
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$")

# Save files in pdf and eps format
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
Keine Rasterung, Rasterung, Keine Rasterung, Rasterung z$<-10$
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.

Verweise

In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:

Gesamtlaufzeit des Skripts: ( 0 Minuten 2.150 Sekunden)

Galerie generiert von Sphinx-Gallery