Bagaimana cara mengekspor plot dari matplotlib dengan latar belakang transparan?

108

Saya menggunakan matplotlib untuk membuat beberapa grafik dan sayangnya saya tidak dapat mengekspornya tanpa latar belakang putih.

contoh plot dengan latar belakang putih solid

Dengan kata lain, ketika saya mengekspor plot seperti ini dan memposisikannya di atas gambar lain, latar belakang putih menyembunyikan apa yang ada di belakangnya daripada membiarkannya terlihat. Bagaimana cara mengekspor plot dengan latar belakang transparan?

Cupitor
sumber

Jawaban:

177

Gunakan savefigfungsi matplotlib dengan argumen kata kunci transparent=Trueuntuk menyimpan gambar sebagai file 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)

Hasil: demo.png

Tentu saja, plot itu tidak menunjukkan transparansi. Berikut tangkapan layar dari file PNG yang ditampilkan menggunakan displayperintah ImageMagick . Pola papan catur adalah latar belakang yang terlihat melalui bagian transparan dari file PNG.

tampilan screenshot

Warren Weckesser
sumber
2

File png dapat menangani transparansi. Jadi Anda bisa menggunakan pertanyaan ini Simpan plot ke file gambar daripada menampilkannya menggunakan Matplotlib untuk menyimpan grafik Anda sebagai pngfile.

Dan jika Anda ingin mengubah semua piksel putih menjadi transparan, ada pertanyaan lain ini: Menggunakan PIL untuk membuat semua piksel putih transparan?

Jika Anda ingin mengubah seluruh area menjadi transparan, maka ada pertanyaan ini: Dan kemudian gunakan pustaka PIL seperti dalam pertanyaan ini Python PIL: bagaimana membuat area menjadi transparan di PNG? agar grafik Anda transparan.

Stephane Rolland
sumber
Terima kasih, tapi ini tidak membantu. Saya tahu bahwa png mampu menjadi transparan tetapi output dari matplotlib tidak. Ditambah saran Anda hanya mencakup kasus saat Anda ingin menghapus persegi panjang. Saya ingin plot saya disimpan dan latar belakang saya dihapus.
Cupitor
2
Sejauh yang saya ingat Anda mengatur yang merupakan warna transparan dalam png. mengajukan. Atur warna putih sebagai warna transparansi dan begitulah.
Stephane Rolland
Saya kira 255 berwarna putih dan ketika saya menggunakannya, plot saya hilang!
Cupitor
itu aneh. plot Anda saja? grafik dalam warna hitam dan unit dalam kurva hitam dan biru juga?
Stephane Rolland
1
ada pertanyaan tentang mengubah semua piksel putih menjadi transparansi (tidak menggunakan topeng seperti yang saya tautkan dengan Anda) stackoverflow.com/questions/765736/…
Stephane Rolland