8

私は通常ax.set_rasterized(True)、図をラスタライズして、形式で保存したときに透過性を処理できるようにしepsますが、ラスタ化により軸ラベルと目盛りラベルもぼやけます。図全体ではなく、軸内のパッチのみをラスタライズする方法はありますか? または、透過性のある eps 形式をエクスポートするためのより良い方法はありますか? ありがとう。

4

2 に答える 2

8

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も参照)。

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に変換しました。

ラスタライズされた_transparency.png

参照:matplotlibで図をラスター画像としてpdfに保存する方法

于 2012-04-08T11:08:51.153 に答える