私は、いくつかのプロットを.ps/.epsの拡張子で保存しようとすると、その上に透明な楕円を持つプロットを保存しようとする問題があります。
以下は、.pngとして保存されたプロットです。 です。
.ps/.epsで保存する場合は以下のようになります。 のようになります。
これを回避する方法は、ImageMagickを使用して元のpngをpsに変換することでした。唯一の問題は、png形式の画像は約90kで、変換後は4M弱になることです。この画像はたくさんあるので、Latexドキュメントをコンパイルするのに時間がかかりすぎてしまい、よくありません。どなたか解決策をお持ちの方はいらっしゃいませんか?
問題は、eps
が透過をネイティブにサポートしていないことです。
選択肢は少ない。
画像をラスタライズしてepsファイルに埋め込む(@Mollyが提案するように)か、pdfにエクスポートして外部ツール(gsなど)で変換する(通常、ラスタライズに依存することになる)。
'mimic' 透明度、与えられた背景の上に透明なもののように見える色を与える。
matplotlibメーリングリスト](http://matplotlib.1069221.n5.nabble.com/emulate-transparency-in-eps-td27718.html)で議論したところ、ラスタライズすることを提案されましたが、ピクセル化されるか巨大な図が得られるので、実現不可能です。そして、それらは、例えば、出版物に入れられるとき、あまりうまく拡大縮小できません。
私自身は2番目の方法をとっており、理想的ではありませんが、十分な効果があると感じています。このSOポスト](https://stackoverflow.com/questions/2049230/convert-rgba-color-to-rgb?rq=1y%)のアルゴリズムを実装した小さな[Pythonスクリプト](https://github.com/montefra/mimic_alpha)を書き、透明度を与えた色のRGBソリッド表現を得ました。
**編集
あなたのプロットの場合、zorder
キーワードを使って、プロットされた部分を順番に並べてみてください。青い楕円には zorder=10
を、緑には zorder=11
を、16進数には zorder=12
を使ってみてください。
この方法では、青がすべての下にあり、次に緑の楕円、最後に六角柱があるはずです。そして、プロットは単色でも読みやすくなるはずです。もしpngの青と緑の色合いが好きなら、mimic_alpha.py
で遊んでみてください。
編集 2
もし、eps を使わなければならないと 100% 確信しているのなら、私の頭に浮かぶ回避策がいくつかあります (そしてそれはあなたのプロットより間違いなく醜いものです)。
1.六角形の上に楕円の縁を描くだけ。
2.2. 各六角形の中心と振幅を取得し、(おそらくゼロビンをすべて捨てて) hexbin
と同じカラーマップを使って scatter plot を作り、マーカーのサイズと形状を好きなように調整します。その上で、楕円の境界を再描画するとよいでしょう。