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.