私は輪郭プロットがあり、.svgまたは.pdfファイルとして保存したいと思います。以下は簡単な例です。私は等高線図そのもの(カラフルな部分!)をラスタライズし、他のもの(すべての軸、ラベルなど)をベクトル図形として保持したいと考えています。私はfig.svgを検査またはInkscapeの(私は、ベクトルシェイプに充填された輪郭のグループ化を解除することができています)での編集用に開くと塗りつぶし輪郭プロットの輪郭のラスタライズ
import numpy as np
import matplotlib.pylab as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.linspace(0, 2*np.pi, 100)
xi, yi = np.meshgrid(x, y)
zi = np.cos(xi)**2 + np.sin(yi)**2
plt.figure()
plt.contourf(xi, yi, zi, rasterized=True)
plt.savefig('fig.svg', dpi=100)
しかし、ラスタライズが働いていないことは明らかです!
このような単純なプロットでは問題ありませんが、私のプロットの輪郭レベルが高いほど(下)、ベクター画像には多くの曲線が多く必要になり、ファイルサイズがはるかに大きくなります。
plt.close()
plt.figure()
plt.contourf(xi, yi, zi, 100, rasterized=True)
plt.savefig('fig.svg', dpi=100)
誰かが解決策を提案し、このrasterized=True
フラグは、私が必要とするものに行われていない理由を説明していただけますか?
'contourf()'は['QuadContourSet'](https://matplotlib.org/api/contour_api.html#matplotlib.contour.QuadContourSet)オブジェクトを返します。このオブジェクトは、 'Artist'クラスから降下するオブジェクトと異なり、*ラスタライズされた*プロパティを持ちません。 –