ノート
完全なサンプルコードをダウンロードするには、ここをクリックしてください
ベクター グラフィックスのラスタライズ#
ラスター化は、ベクター グラフィックスをラスター イメージ (ピクセル) に変換します。レンダリングを高速化し、大規模なデータ セットの小さいファイルを生成できますが、固定解像度が犠牲になります。
ラスタライズを使用するかどうかは、アーティストごとに指定できます。これは、軸やテキストなどの他のアーティストのベクター グラフィックスの利点を維持しながら、大規模なアーティストのファイル サイズを縮小するのに役立ちます。たとえば、複雑なpcolormesh
または
contourf
ラスタライズによって大幅に単純化することができます。ラスター化の設定は、PDF、SVG、PS などのベクター バックエンドにのみ影響します。
ラスタライズはデフォルトで無効になっています。有効にするには 2 つの方法があり、これらを組み合わせることもできます。
個々のアーティストに設定するか、アーティストの作成時にラスター
set_rasterized
化されたキーワード引数を使用します。Axes.set_rasterization_zorder
指定された値よりも小さい zorder を持つすべてのアーティストをラスタライズするように設定します。
ラスタライズされたアーティストのストレージ サイズと解像度は、その物理サイズと にdpi
渡されるパラメータ
の値によって決まりますsavefig
。
ノート
HTML ドキュメントに示されているこの例の画像は、ベクター グラフィックではありません。したがって、ラスタライズ効果を説明することはできません。この例をローカルで実行し、生成されたグラフィック ファイルを確認してください。
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
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.
参考文献
この例では、次の関数、メソッド、クラス、およびモジュールの使用が示されています。
スクリプトの合計実行時間: ( 0 分 2.150 秒)