Rasterización de gráficos vectoriales con Python

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá sobre la rasterización para gráficos vectoriales. La rasterización es un proceso de conversión de gráficos vectoriales en una imagen raster (píxeles). Puede acelerar la representación y producir archivos más pequeños para conjuntos de datos grandes, pero tiene como costo una resolución fija. Usaremos la biblioteca Python Matplotlib para ilustrar el concepto de rasterización.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje comentarios después de la sesión y resolveremos rápidamente el problema para usted.

Importar bibliotecas

Antes de comenzar, necesitamos importar las bibliotecas necesarias.

import matplotlib.pyplot as plt
import numpy as np

Crear datos

Vamos a crear algunos datos que se usarán para ilustrar el concepto de rasterización.

d = np.arange(100).reshape(10, 10)  ## los valores que se mapearán a colores
x, y = np.meshgrid(np.arange(11), np.arange(11))

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

Crear una figura con cuatro subtramas

Crearemos una figura con cuatro subtramas para ilustrar los diferentes aspectos de la rasterización.

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

Crear un gráfico pcolormesh sin rasterización

Crearemos un gráfico pcolormesh sin rasterización para ilustrar la diferencia entre rasterización y no rasterización.

ax1.set_aspect(1)
ax1.pcolormesh(xx, yy, d)
ax1.set_title("No Rasterización")

Crear un gráfico pcolormesh con rasterización

Crearemos un gráfico pcolormesh con rasterización para ilustrar cómo la rasterización puede acelerar la representación y generar archivos más pequeños.

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

Crear un gráfico pcolormesh con texto superpuesto sin rasterización

Crearemos un gráfico pcolormesh con texto superpuesto sin rasterización para ilustrar cómo los gráficos vectoriales pueden mantener las ventajas de los gráficos vectoriales para algunos artistas, como los ejes y el texto.

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 Rasterización")

Crear un gráfico pcolormesh con texto superpuesto con rasterización

Crearemos un gráfico pcolormesh con texto superpuesto con rasterización para ilustrar cómo la rasterización puede permitir que los gráficos vectoriales mantengan las ventajas de los gráficos vectoriales para algunos artistas, como los ejes y el texto.

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("Rasterización z$<-10$")

Guardar las figuras

Guardaremos las figuras en formatos pdf y 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

Resumen

En este laboratorio, aprendimos sobre la rasterización para gráficos vectoriales. Utilizamos la biblioteca Matplotlib de Python para ilustrar el concepto de rasterización. Creamos una figura con cuatro subtramas para ilustrar los diferentes aspectos de la rasterización. También aprendimos cómo la rasterización puede acelerar la representación y generar archivos más pequeños para conjuntos de datos grandes, pero tiene como costo una resolución fija. También aprendimos cómo la rasterización puede permitir que los gráficos vectoriales mantengan las ventajas de los gráficos vectoriales para algunos artistas, como los ejes y el texto.