Rasterização de Gráficos Vetoriais com Python

Beginner

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

Introdução

Neste laboratório, você aprenderá sobre rasterização para gráficos vetoriais. Rasterização (Rasterization) é um processo de conversão de gráficos vetoriais em uma imagem raster (pixels). Ela pode acelerar a renderização e produzir arquivos menores para grandes conjuntos de dados, mas tem o custo de uma resolução fixa. Usaremos a biblioteca Python Matplotlib para ilustrar o conceito de rasterização.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar bibliotecas

Precisamos importar as bibliotecas necessárias antes de começar.

import matplotlib.pyplot as plt
import numpy as np

Criar dados

Criaremos alguns dados que serão usados para ilustrar o conceito de rasterização.

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

Criar uma figura com quatro subplots

Criaremos uma figura com quatro subplots para ilustrar os diferentes aspectos da rasterização.

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

Criar um gráfico pcolormesh sem rasterização

Criaremos um gráfico pcolormesh sem rasterização para ilustrar a diferença entre rasterização e não rasterização.

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

Criar um gráfico pcolormesh com rasterização

Criaremos um gráfico pcolormesh com rasterização para ilustrar como a rasterização pode acelerar a renderização e produzir arquivos menores.

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

Criar um gráfico pcolormesh com texto sobreposto sem rasterização

Criaremos um gráfico pcolormesh com texto sobreposto sem rasterização para ilustrar como gráficos vetoriais podem manter as vantagens dos gráficos vetoriais para alguns artistas, como os eixos e o 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 Rasterization")

Criar um gráfico pcolormesh com texto sobreposto com rasterização

Criaremos um gráfico pcolormesh com texto sobreposto com rasterização para ilustrar como a rasterização pode permitir que gráficos vetoriais mantenham as vantagens dos gráficos vetoriais para alguns artistas, como os eixos e o 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("Rasterization z$<-10$")

Salvar as figuras

Salvaremos as figuras em formato pdf e 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

Resumo

Neste laboratório, aprendemos sobre rasterização para gráficos vetoriais. Usamos a biblioteca Python Matplotlib para ilustrar o conceito de rasterização. Criamos uma figura com quatro subplots para ilustrar os diferentes aspectos da rasterização. Também aprendemos como a rasterização pode acelerar a renderização e produzir arquivos menores para grandes conjuntos de dados, mas isso tem o custo de uma resolução fixa. Também aprendemos como a rasterização pode permitir que gráficos vetoriais mantenham as vantagens dos gráficos vetoriais para alguns artistas, como os eixos e o texto.