วิธีการส่งออกแปลงจาก matplotlib ที่มีพื้นหลังโปร่งใส


108

ฉันใช้ matplotlib เพื่อสร้างกราฟและน่าเสียดายที่ฉันไม่สามารถส่งออกได้หากไม่มีพื้นหลังสีขาว

พล็อตตัวอย่างที่มีพื้นหลังสีขาวทึบ

กล่าวอีกนัยหนึ่งคือเมื่อฉันส่งออกพล็อตแบบนี้และวางตำแหน่งไว้ด้านบนของรูปภาพอื่นพื้นหลังสีขาวจะซ่อนสิ่งที่อยู่ข้างหลังแทนที่จะปล่อยให้มันแสดงผ่าน ฉันจะส่งออกแปลงที่มีพื้นหลังโปร่งใสแทนได้อย่างไร

คำตอบ:


177

ใช้savefigฟังก์ชันmatplotlib กับอาร์กิวเมนต์คีย์เวิร์ดtransparent=Trueเพื่อบันทึกรูปภาพเป็นไฟล์ 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

แน่นอนว่าพล็อตนั้นไม่ได้แสดงให้เห็นถึงความโปร่งใส นี่คือภาพหน้าจอของไฟล์ PNG ที่แสดงโดยใช้displayคำสั่งImageMagick รูปแบบกระดานหมากรุกเป็นพื้นหลังที่มองเห็นได้ผ่านส่วนโปร่งใสของไฟล์ PNG

แสดงภาพหน้าจอ


2

ไฟล์ PNG สามารถจัดการกับความโปร่งใสได้ ดังนั้นคุณสามารถใช้คำถามนี้บันทึกพล็อตลงในไฟล์รูปภาพแทนการแสดงโดยใช้ Matplotlibเพื่อบันทึกกราฟเป็นpngไฟล์

และถ้าคุณต้องการเปลี่ยนพิกเซลสีขาวทั้งหมดให้โปร่งใสมีคำถามอื่น ๆ : การใช้ PIL เพื่อทำให้พิกเซลสีขาวทั้งหมดโปร่งใสหรือไม่?

หากคุณต้องการเปลี่ยนพื้นที่ทั้งหมดให้โปร่งใสก็มีคำถามนี้: จากนั้นใช้ไลบรารี PIL เช่นในคำถามนี้Python PIL: จะทำให้พื้นที่โปร่งใสใน PNG ได้อย่างไร? เพื่อให้กราฟของคุณโปร่งใส


ขอบคุณ แต่สิ่งนี้ไม่ได้ช่วยอะไร ฉันรู้ว่า png สามารถโปร่งใสได้ แต่ผลลัพธ์ของ matplotlib ไม่ได้ นอกจากนี้คำแนะนำของคุณจะครอบคลุมเฉพาะกรณีที่คุณต้องการลบรูปสี่เหลี่ยม ฉันต้องการให้พล็อตของฉันถูกบันทึกและพื้นหลังของฉันถูกลบออก
Cupitor

2
เท่าที่ฉันจำได้ว่าคุณตั้งค่าซึ่งเป็นสีโปร่งใสใน png ไฟล์. ตั้งค่าสีขาวเป็นสีโปร่งใสและไปที่นั่น
Stephane Rolland

ฉันคิดว่า 255 เป็นสีขาวและเมื่อฉันไปกับมันฉันจะหลงทาง!
Cupitor

ที่แปลก แปลงของคุณเท่านั้น? กราฟเป็นสีดำและหน่วยเป็นสีดำและเส้นโค้งสีน้ำเงินด้วย?
Stephane Rolland

1
มีคำถามนี้เกี่ยวกับการเปลี่ยนพิกเซลสีขาวทั้งหมดให้เป็นความโปร่งใส (ไม่ใช้มาสก์เหมือนที่ฉันเชื่อมโยงกับคุณ) stackoverflow.com/questions/765736/…
Stephane Rolland
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.