背景が透明なmatplotlibからプロットをエクスポートする方法は?


107

matplotlibを使用していくつかのグラフを作成していますが、残念ながら、白い背景なしではエクスポートできません。

背景が純色のサンプルプロット

つまり、このようにプロットをエクスポートして別の画像の上に配置すると、白い背景が透けて見えるのではなく、背後にあるものを非表示にします。代わりに背景を透明にしてプロットをエクスポートするにはどうすればよいですか?

回答:


176

savefigキーワード引数transparent=Trueを指定してmatplotlib 関数を使用し、画像をpngファイルとして保存します。

In [30]: x = np.linspace(0,6,31)

In [31]: y = np.exp(-0.5*x) * np.sin(x)

In [32]: plot(x, y, 'bo-')
Out[32]: [<matplotlib.lines.Line2D at 0x3f29750>]            

In [33]: savefig('demo.png', transparent=True)

結果: demo.png

もちろん、そのプロットは透明性を示していません。以下は、ImageMagick displayコマンドを使用して表示されたPNGファイルのスクリーンショットです。チェッカーボードパターンは、PNGファイルの透明な部分を通して見える背景です。

スクリーンショットを表示


2

PNGファイルは透明度を処理できます。したがって、グラフをファイルとして保存するために、Matplotlibを使用してプロットを表示する代わりに、この質問Save plot to image fileを使用pngできます。

そして、もしあなたがすべての白いピクセルを透明にしたいなら、この別の質問があります:PILを使ってすべての白いピクセルを透明にしますか?

領域全体を透明にしたい場合は、この質問があります:次に、この質問のようにPILライブラリを使用しますPython PIL:PNGで領域を透明にする方法は?グラフを透明にするため。


おかげで、これは助けにはなりません。私はpngが透過的であることができることを知っていましたが、matplotlibの出力はそうではありません。さらに、あなたの提案は、長方形を削除したい場合のみをカバーしています。プロットを保存し、背景を削除してください。
キューピトール2013

2
私が覚えている限り、あなたはpngの透明色を設定しました。ファイル。白色を透明色に設定すれば完了です。
ステファンRolland 2013

255は白だと思います。これを使うと、陰謀が失われます。
Cupitor 2013

それ、変だよ。あなたのプロットだけ?黒のグラフと黒と青の単位の曲線もですか?
ステファンRolland 2013

1
(私はあなたにリンクされているようにマスクを使用していない)透明度にすべての白画素を回すことについて、この質問がありますstackoverflow.com/questions/765736/...
ステファン・ロラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.