2024-05-17 03:42:37 发布
网友
我通常使用ax.set_rasterized(True)对图形进行光栅化,以便在保存为eps格式时可以处理透明度,但光栅化也会模糊轴标签和ticklebels,所以是否有方法只光栅化轴内的补片,而不是整个图形?或者有更好的办法导出透明的eps格式吗?谢谢。
ax.set_rasterized(True)
eps
如果指定dpi,结果会更好,dpi似乎默认值很低。例如,将最后一行更改为
plt.savefig('rasterized_transparency.eps',dpi=200)
文件长到4.5米,在Acrobat中放大200%看起来很好。不过,我同意可能有更紧凑的格式支持透明度。
由于matplotlib Artists可以光栅化,因此从Artist(http://matplotlib.sourceforge.net/api/artist_api.html)派生的任何类都可以光栅化,关键字rasterized设置为True。所以你只能光栅化你的补丁。
rasterized
True
我只是尝试了一些组合,似乎奏效了。然而,质量似乎不是很好(另见http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg13276.html)。
import numpy as np import matplotlib.pyplot as plt def add_patch(ax, **kwargs): if 'rasterized' in kwargs and kwargs['rasterized']: ax.set_rasterization_zorder(0) ax.fill_between(np.arange(1, 10), 1, 2, zorder=-1, **kwargs) ax.set_xlim(0, 10) ax.set_ylim(0, 3) if 'alpha' in kwargs and kwargs['alpha'] < 1: txt = 'This patch is transparent!' else: txt = 'This patch is not transparent!' ax.text(5, 1.5, txt, ha='center', va='center', fontsize=25, zorder=-2, rasterized=True) fig, axes = plt.subplots(nrows=4, sharex=True) add_patch(axes[0], alpha=0.2, rasterized=False) add_patch(axes[1], alpha=0.2, rasterized=True) add_patch(axes[2], rasterized=False) add_patch(axes[3], rasterized=True) plt.tight_layout() plt.savefig('rasterized_transparency.eps')
我将eps转换为png以在浏览器中显示:
另请参见:How to save figures to pdf as raster images in matplotlib。
如果指定dpi,结果会更好,dpi似乎默认值很低。例如,将最后一行更改为
文件长到4.5米,在Acrobat中放大200%看起来很好。不过,我同意可能有更紧凑的格式支持透明度。
由于matplotlib Artists可以光栅化,因此从Artist(http://matplotlib.sourceforge.net/api/artist_api.html)派生的任何类都可以光栅化,关键字
rasterized
设置为True
。所以你只能光栅化你的补丁。我只是尝试了一些组合,似乎奏效了。然而,质量似乎不是很好(另见http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg13276.html)。
我将
eps
转换为png以在浏览器中显示:另请参见:How to save figures to pdf as raster images in matplotlib。
相关问题 更多 >
编程相关推荐