【发布时间】:2017-12-07 15:51:05
【问题描述】:
我有一个填充的等高线图,我希望将其保存为 .svg 或 .pdf 文件。下面是一个简化的例子。我想栅格化等高线图本身(彩色部分!),同时将其他所有内容(所有轴、标签等)保留为矢量图形。
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)
但是,当我检查 fig.svg 或在 Inkscape 中打开它进行编辑时(我能够将填充的轮廓取消组合为矢量形状),很明显光栅化没有奏效!
对于这样一个简单的绘图来说这很好,但是如果我的绘图有更多的等高线级别(如下),则矢量图像将需要许多曲线并且文件大小会更大。
plt.close()
plt.figure()
plt.contourf(xi, yi, zi, 100, rasterized=True)
plt.savefig('fig.svg', dpi=100)
有人可以提出一个解决方案并解释为什么这个rasterized=True 标志没有完成我的要求吗?
【问题讨论】:
-
contourf()返回一个QuadContourSet对象。此对象与从Artist类继承的对象不同,它没有 rasterized 属性。
标签: python matplotlib