栅格化matplotlib轴内容(但不是帧,标签)

ger*_*jan 10 python plot matplotlib vector-graphics rasterizing

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

高密度网格出现了问题,对于这种网格来说,天真的方法导致文件太大而且渲染太密集而不实用.

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

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

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

谢谢你的建议.

tia*_*ago 13

只需将rasterized=True关键字传递给集合构造函数即可.例:

col = collections.PolyCollection(<arguments>, rasterized=True)
Run Code Online (Sandbox Code Playgroud)

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

fig = plt.figure()
a = fig.add_subplot(1,1,1, rasterized=True)
Run Code Online (Sandbox Code Playgroud)

(但这不是你想要的,正如问题所述.)