Rasterisation pour les graphiques vectoriels #

La rastérisation convertit les graphiques vectoriels en une image raster (pixels). Il peut accélérer le rendu et produire des fichiers plus petits pour de grands ensembles de données, mais se fait au prix d'une résolution fixe.

L'utilisation de la rastérisation peut être spécifiée par artiste. Cela peut être utile pour réduire la taille des fichiers des grands artistes, tout en conservant les avantages des graphiques vectoriels pour les autres artistes tels que les axes et le texte. pcolormeshPar exemple, un or compliqué contourfpeut être considérablement simplifié en pixellisant. La définition de la rastérisation n'affecte que les backends vectoriels tels que PDF, SVG ou PS.

La rastérisation est désactivée par défaut. Il existe deux façons de l'activer, qui peuvent également être combinées :

  • Définissez set_rasterizeddes artistes individuels ou utilisez l'argument mot-clé pixellisé lors de la création de l'artiste.

  • Défini Axes.set_rasterization_zorderpour pixelliser tous les artistes avec un zorder inférieur à la valeur donnée.

La taille de stockage et la résolution de l'artiste pixellisé sont déterminées par sa taille physique et la valeur du dpiparamètre passé à savefig.

Noter

L'image de cet exemple montré dans la documentation HTML n'est pas un graphique vectoriel. Par conséquent, il ne peut pas illustrer l'effet de pixellisation. Veuillez exécuter cet exemple localement et vérifier les fichiers graphiques générés.

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
Pas de rastérisation, rastérisation, pas de rastérisation, rastérisation z$<-10$
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.

Références

L'utilisation des fonctions, méthodes, classes et modules suivants est illustrée dans cet exemple :

Durée totale d'exécution du script : ( 0 minutes 2.150 secondes)

Galerie générée par Sphinx-Gallery