Introduction
Dans ce laboratoire, vous allez découvrir la rastérisation pour les graphiques vectoriels. La rastérisation est un processus consistant à convertir des graphiques vectoriels en une image matricielle (pixels). Elle peut accélérer le rendu et produire des fichiers plus petits pour de grands ensembles de données, mais cela se fait au prix d'une résolution fixe. Nous allons utiliser la bibliothèque Python Matplotlib pour illustrer le concept de rastérisation.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous réglerons rapidement le problème pour vous.
Importation des bibliothèques
Nous devons importer les bibliothèques requises avant de commencer.
import matplotlib.pyplot as plt
import numpy as np
Création de données
Nous allons créer certaines données qui seront utilisées pour illustrer le concept de rastérisation.
d = np.arange(100).reshape(10, 10) ## les valeurs à mapper en couleur
x, y = np.meshgrid(np.arange(11), np.arange(11))
theta = 0.25*np.pi
xx = x*np.cos(theta) - y*np.sin(theta) ## faire tourner x de -theta
yy = x*np.sin(theta) + y*np.cos(theta) ## faire tourner y de -theta
Créer une figure avec quatre sous-graphiques
Nous allons créer une figure avec quatre sous-graphiques pour illustrer les différents aspects de la rastérisation.
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, layout="constrained")
Créer un tracé pcolormesh sans rastérisation
Nous allons créer un tracé pcolormesh sans rastérisation pour illustrer la différence entre la rastérisation et la non-rastérisation.
ax1.set_aspect(1)
ax1.pcolormesh(xx, yy, d)
ax1.set_title("No Rasterization")
Créer un tracé pcolormesh avec rastérisation
Nous allons créer un tracé pcolormesh avec rastérisation pour illustrer la manière dont la rastérisation peut accélérer le rendu et produire des fichiers plus petits.
ax2.set_aspect(1)
ax2.set_title("Rasterization")
ax2.pcolormesh(xx, yy, d, rasterized=True)
Créer un tracé pcolormesh avec un texte superposé sans rastérisation
Nous allons créer un tracé pcolormesh avec un texte superposé sans rastérisation pour illustrer la manière dont les graphiques vectoriels peuvent conserver les avantages des graphiques vectoriels pour certains artistes tels que les axes et le texte.
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")
Créer un tracé pcolormesh avec un texte superposé avec rastérisation
Nous allons créer un tracé pcolormesh avec un texte superposé avec rastérisation pour illustrer la manière dont la rastérisation peut permettre aux graphiques vectoriels de conserver les avantages des graphiques vectoriels pour certains artistes tels que les axes et le texte.
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$")
Enregistrer les figures
Nous allons enregistrer les figures au format pdf et eps.
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
Récapitulatif
Dans ce laboratoire, nous avons appris à propos de la rastérisation pour les graphiques vectoriels. Nous avons utilisé la bibliothèque Python Matplotlib pour illustrer le concept de rastérisation. Nous avons créé une figure avec quatre sous-graphiques pour illustrer les différents aspects de la rastérisation. Nous avons également appris comment la rastérisation peut accélérer le rendu et produire des fichiers plus petits pour de grandes séries de données, mais cela se fait au prix d'une résolution fixe. Nous avons également appris comment la rastérisation peut permettre aux graphiques vectoriels de conserver les avantages des graphiques vectoriels pour certains artistes tels que les axes et le texte.