52

.ps/.eps 拡張子を付けてプロットを保存しようとすると、透明な楕円体を含むプロットを保存しようとすると問題が発生します。

.png として保存されたプロットは次のとおりです。 png

.ps/.eps として保存することを選択した場合、次のようになります。 ps

これを回避する方法は、ImageMagick を使用して元の png を ps に変換することでした。唯一の問題は、png 形式の画像が約 90k であり、変換後に 4M 弱になることです。これらの画像がたくさんあるので、これは良くありません。また、latex ドキュメントをコンパイルするには時間がかかりすぎます。誰にもこれに対する解決策がありますか?

4

8 に答える 8

35

問題は、eps透過性をネイティブにサポートしていないことです。

いくつかのオプションがあります:

  1. 画像をラスタライズしてepsファイルに埋め込む(@Mollyが示唆するように)か、pdfにエクスポートして外部ツール(gsなど)で変換します(通常はラスタライズにも依存します)

  2. 透明度を「模倣」し、特定の背景に透明な色のように見える色を与えます。

これについては、matplotlib メーリング リストで一度議論しましたが、ラスタライズするよう提案されました。また、出版物などに入れると、あまりうまくスケーリングされません。

私は個人的に 2 番目のアプローチを使用しており、理想的ではありませんが、それで十分であることがわかりました。この SO 投稿のアルゴリズムを実装して、透明度のある色のソリッド RGB 表現を取得する小さなpython スクリプトを作成しました。

編集

プロットの特定のケースでは、zorderキーワードを使用して、プロットされた部分を並べ替えてみてください。zorder=10青い楕円、zorder=11zorder=12、ヘクスビンに使用してみてください。

このようにして、青がすべての下にあり、次に緑の楕円、最後に hexbins があるはずです。また、プロットは単色でも読みやすいはずです。また、png の青と緑の色合いが気に入った場合は、 で遊んでみることができますmimic_alpha.py

編集2

eps を使用する必要があることを 100% 確信している場合は、私の頭に浮かぶいくつかの回避策があります (そして、それは間違いなくあなたのプロットよりも醜いです):

  1. ヘックスビンの上に楕円の境界線を描くだけです。
  2. 各六角形の中心と振幅を取得し (すべてのゼロ ビンを破棄する可能性があります) 、同じカラー マップを使用して散布図hexbinを作成し、マーカーのサイズと形状を好きなように調整します。その上に楕円の境界線を再描画することをお勧めします
于 2013-10-28T17:41:18.490 に答える
26

別の代替手段は、それらをpdfに保存することです

savefig('myfigure.pdf')

それがsvgではなくepsを使用する必要がある理由である場合、pdflatexで機能します。

于 2014-03-11T23:13:40.827 に答える
11

私も同じ問題を抱えていました。ラスタライズを避けるために、画像を pdf として保存してから (少なくとも unixish システムでは) ターミナルで実行できます。

pdftops -eps my.pdf my.eps

出力として .eps ファイルを提供します。

于 2014-05-08T11:47:45.043 に答える
1

前述のように、(解像度を下げたくない場合) 最も簡単な選択は、Figure をラスタライズすることです。

f = plt.figure()
f.set_rasterized(True)

ax = f.add_subplot(111)

ax.set_rasterized(True)
f.savefig('figure_name.eps',rasterized=True,dpi=300)

このように、dpi オプションでサイズを管理することもできます。実際、ラスタライズを適用する以下の zorder で遊ぶこともできます。

ax.set_rasterization_zorder(0)

注: plt.subplot および plt.subplot2grid 関数を使用する場合は、f.set_rasterized(True) を維持することが重要です。そうしないと、ラベルと目盛り領域が .eps ファイルに表示されません。

于 2016-11-23T19:49:44.813 に答える
0

私の解決策は、プロットを.epsとしてエクスポートし、たとえばInkscapeにロードしてから、プロットのグループを解除し、透明度を設定したいオブジェクトを選択し、[塗りつぶしとストローク]タブで塗りつぶしの不透明度を編集することです.

後で微調整する場合は、ファイルを .svg として保存するか、出版物用に画像をエクスポートできます。

于 2015-09-10T09:26:14.977 に答える