ฉันกำลังดิ้นรนกับปัญหาต่อไปนี้ ฉันต้องการสร้างรายงานที่ประกอบด้วยชุดแผนภูมิ แผนภูมิเหล่านี้ทั้งหมดยกเว้นแผนภูมิเดียวสร้างโดยใช้แบ็กเอนด์เริ่มต้นของ Matplotlib (TkAgg) ต้องสร้างแผนภูมิหนึ่งรายการโดยใช้แบ็กเอนด์ไคโรเหตุผลคือฉันกำลังพล็อตกราฟ igraph และสามารถพล็อตได้โดยใช้ไคโร
ปัญหาคือฉันไม่สามารถเปลี่ยนแบ็กเอนด์ได้ทันทีตัวอย่างเช่นสิ่งต่อไปนี้ใช้ไม่ได้:
matplotlib.pyplot.switch_backend('cairo.png')
(ฉันรู้ว่าฟังก์ชัน switch_backend กำลังทดลอง)
และฉันได้พยายามยังmatplotlib.use("cairo.png")
แต่นี้นำไปสู่การแก้ปัญหาการนำเข้าเป็นคำสั่งที่ควรจะมาก่อนนำเข้าmatplotlib.use("cairo.png")
matplotlib.pyplot
แต่ฉันต้องการแบ็กเอนด์สองแบบที่แตกต่างกันตลอดช่วงชีวิตของสคริปต์
คำถามของฉันคือใครบางคนมีข้อมูลโค้ดที่แสดงวิธีเปลี่ยนแบ็กเอนด์ใน Matplotlib หรือไม่
ขอบคุณมาก!
อัปเดต: ฉันได้เขียนตัวอย่างข้อมูลที่โหลด matplotlib แสดงแบ็กเอนด์เริ่มต้นยกเลิกการโหลด matplotlib โหลดซ้ำและเปลี่ยนแบ็กเอนด์:
import matplotlib
import matplotlib.pyplot as plt
import sys
print matplotlib.pyplot.get_backend()
modules = []
for module in sys.modules:
if module.startswith('matplotlib'):
modules.append(module)
for module in modules:
sys.modules.pop(module)
import matplotlib
matplotlib.use("cairo.png")
import matplotlib.pyplot as plt
print matplotlib.pyplot.get_backend()
แต่นี่เป็นวิธีที่ทำได้จริงหรือ
อัปเดต 2: เมื่อวานฉันมีอาการสมองหยุดทำงานอย่างรุนแรง ... วิธีแก้ปัญหาที่ง่ายและชัดเจนที่สุดคือใช้แบ็กเอนด์ของไคโรสำหรับแผนภูมิทั้งหมดและไม่ต้องสลับแบ็กเอนด์เลย :)
อัปเดต 3: จริงๆแล้วมันยังคงเป็นปัญหาอยู่ดังนั้นใครก็ตามที่รู้วิธีสลับแบ็กเอนด์ matplotlib แบบไดนามิก .... โปรดโพสต์คำตอบของคุณ
pyplot.switch_backends()
. อาจไม่ได้ผลในกรณีของคุณ