使用ax.set_rasterization_zorder()将栅格化对象放在轴范围之外

时间:2016-05-04 21:17:55

标签: matplotlib

下图(导出为pdf)包含在PDF查看器中缓慢加载的过于详细的矢量图像:

enter image description here

我正在尝试栅格化显示的多边形的轮廓。但是,当我使用ax.set_rasterization_zorder(0)时,会发生以下情况:

enter image description here

我认为这是一个后端问题,但无法弄清楚如何解决问题。

import numpy as np
import matplotlib as mpl
from matplotlib.collections import PatchCollection
fig, ax = plt.subplots()
ax.imshow(dem, zorder=-2, rasterized=True)
parts = mpl.patches.Polygon(vertices)
polygon = PatchCollection(parts, zorder=-1)
ax.add_collection(polygon)
ax.set_rasterization_zorder(0)

1 个答案:

答案 0 :(得分:0)

创建绘制多边形的from django.db.models import Q commenters = User.objects.filter(Q(id=which_photo.owner_id)|Q(photocomment=which_photo)) 对象时,我没有设置rasterized=True。使用PatchCollection而不使用rasterized=True时,每个多边形都会单独进行栅格化,从而创建一个大文件;但是,它至少在正确的位置。

在调用ax.set_rasterization_zorder()之前,首先在PatchCollection级别栅格化多边形并将其与ax.set_rasterization_zorder()组合,然后将所有多边形对象与基础DEM合并为一个栅格,创建可由Adobe PDF查看器管理的文件。

plt.savefig()