13

对于一篇文章,我正在生成变形的有限元网格图,我使用 matplotlib 的 polycollection 对其进行可视化。图像保存为 pdf。

高密度网格会出现问题,天真的方法会导致文件太大并且渲染过于密集而无法实用。

对于这些网格,将每个元素绘制为多边形确实没有意义;它可以很容易地被光栅化,就像将图像保存为 jpg 或 png 一样。但是,对于打印,我想保留一个清晰的框架、标签和注释。

有谁知道是否有可能在 matplotlib 中实现这种混合光栅化?

我可以想到涉及 imshow 和绕过 polycollection 的解决方案,但我更喜欢使用 matplotlib 的内置组件。

谢谢你的建议。

4

1 回答 1

16

只需将rasterized=True关键字传递给您的集合构造函数。例子:

col = collections.PolyCollection(<arguments>, rasterized=True)

这仅允许对该元素进行选择性光栅化(例如,如果您在其顶部进行了正常绘图,则默认情况下将对其进行矢量化)。大多数命令喜欢plotorimshow也可以使用rasterized关键字。如果想要栅格化整个图形(包括标签和注释),可以这样做:

fig = plt.figure()
a = fig.add_subplot(1,1,1, rasterized=True)

(但这不是您想要的,如问题中所述。)

于 2012-12-26T04:06:56.140 回答