Rasterização para gráficos vetoriais #

A rasterização converte gráficos vetoriais em uma imagem rasterizada (pixels). Ele pode acelerar a renderização e produzir arquivos menores para grandes conjuntos de dados, mas tem o custo de uma resolução fixa.

Se a rasterização deve ser usada pode ser especificada por artista. Isso pode ser útil para reduzir o tamanho do arquivo de grandes artistas, mantendo as vantagens dos gráficos vetoriais para outros artistas, como eixos e texto. Por exemplo, um complicado pcolormeshou contourfpode ser significativamente simplificado por rasterização. A configuração da rasterização afeta apenas back-ends vetoriais, como PDF, SVG ou PS.

A rasterização está desativada por padrão. Existem duas formas de habilitá-lo, que também podem ser combinadas:

  • Defina set_rasterizedartistas individuais ou use o argumento de palavra-chave rasterizado ao criar o artista.

  • Defina Axes.set_rasterization_zorderpara rasterizar todos os artistas com zorder menor que o valor fornecido.

O tamanho de armazenamento e a resolução do artista rasterizado são determinados pelo seu tamanho físico e pelo valor do dpiparâmetro passado para savefig.

Observação

A imagem deste exemplo mostrada na documentação HTML não é um gráfico vetorial. Portanto, não pode ilustrar o efeito de rasterização. Execute este exemplo localmente e verifique os arquivos gráficos gerados.

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
Sem Rasterização, Rasterização, Sem Rasterização, Rasterização z$<-10$
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.

Referências

O uso das seguintes funções, métodos, classes e módulos é mostrado neste exemplo:

Tempo total de execução do script: ( 0 minutos 2.150 segundos)

Galeria gerada por Sphinx-Gallery