如何更好地光栅化绘图而不会模糊matplotlib中的标签?

nye*_*e17 6 python transparency matplotlib eps

我通常使用ax.set_rasterized(True)栅格化图形,以便在eps格式化时保存透明度,但光栅化也会使轴标签和刻度标签模糊,那么有没有办法仅栅格化轴内的补丁而不是整个数字?或者是否更好地导出具有透明度的eps格式?谢谢.

bmu*_*bmu 7

由于matplotlib 艺术家可以进行栅格化,因此可以使用关键字set to 栅格化任何派生自Artist(http://matplotlib.sourceforge.net/api/artist_api.html)的类.所以你只能光栅化你的补丁.rasterizedTrue

我只是尝试了一些组合,它似乎工作.然而质量似乎不是很好(另见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')
Run Code Online (Sandbox Code Playgroud)

我转换eps为png以在浏览器中显示它:

rasterized_transparency.png

另请参阅:如何将数字保存为pdf作为matplotlib中的光栅图像.