Matplotlib プロットを .ps/.eps として保存すると透明度が失われる 質問する

Matplotlib プロットを .ps/.eps として保存すると透明度が失われる 質問する

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

以下は .png として保存されたプロットです。png

.ps/.eps として保存すると、次のようになります。追伸

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

ベストアンサー1

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

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

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

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

私はこれについて議論した一度matplotlibメーリングリストに参加すれば、ラスタライズするように提案されましたが、ピクセル化されるか、図が巨大化するため実行可能ではありません。また、出版物などに載せる場合、あまりきれいに拡大縮小されません。

私は個人的に2番目のアプローチを使用していますが、理想的ではないものの、十分だと思いました。私は小さなPython スクリプトアルゴリズムを実装するこのSOの投稿与えられた透明度を持つ色のRGB表現を得る

編集

プロットの特定のケースでは、zorderキーワードを使用してプロットされた部分を順序付けてみてください。zorder=10青い楕円には 、zorder=11緑のビンには 、zorder=12六角形のビンには を使用してください。

この方法では、青がすべての下に配置され、次に緑の楕円、最後に六角形のビンが配置されます。また、プロットは単色でも読みやすくなります。PNG の青と緑の色合いが気に入ったら、 で試してみてくださいmimic_alpha.py

編集2

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

  1. 六角形のビンの上に楕円の境界線を描くだけです。
  2. 各六角形の中心と振幅を取得し(ゼロのビンはすべて破棄することも可能)、散布図と同じカラーマップを使用しhexbin、マーカーのサイズと形状を好みに合わせて調整します。その上に楕円の境界線を再描画することもできます。

おすすめ記事