Tôi đang đấu tranh với vấn đề sau đây. Tôi cần tạo báo cáo bao gồm một bộ sưu tập các biểu đồ. Tất cả các biểu đồ này, ngoại trừ một biểu đồ, được tạo bằng phụ trợ mặc định Matplotlib (TkAgg). Một biểu đồ cần được tạo bằng cách sử dụng chương trình phụ trợ Cairo, lý do là tôi đang vẽ một biểu đồ igraph và chỉ có thể được vẽ bằng Cairo.
Vấn đề là tôi không thể thay đổi chương trình phụ trợ một cách nhanh chóng, ví dụ như sau không hoạt động:
matplotlib.pyplot.switch_backend('cairo.png')
(Tôi biết rằng chức năng switch_backend là thử nghiệm)
và tôi cũng đã thử matplotlib.use("cairo.png")
nhưng điều này dẫn đến vấn đề nhập vì matplotlib.use("cairo.png")
câu lệnh phải xuất hiện trước khi nhập matplotlib.pyplot
. nhưng tôi cần hai phụ trợ khác nhau trong suốt vòng đời của tập lệnh.
Vì vậy, câu hỏi của tôi là ai đó có một đoạn mã chỉ ra cách chuyển đổi phần phụ trợ trong Matplotlib không?
Cám ơn rất nhiều!
CẬP NHẬT: Tôi đã viết một đoạn mã tải matplotlib, hiển thị phần phụ trợ mặc định, tải xuống matplotlib, tải lại nó và thay đổi phần phụ trợ:
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()
nhưng đây có thực sự là cách để làm điều đó?
CẬP NHẬT 2: Tôi đã bị đóng băng não nghiêm trọng ngày hôm qua ... Giải pháp đơn giản và rõ ràng nhất là sử dụng phụ trợ Cairo cho tất cả các biểu đồ và không chuyển đổi phụ trợ nào cả :)
CẬP NHẬT 3: Trên thực tế, nó vẫn còn là một vấn đề nên bất kỳ ai biết cách chuyển động phụ trợ matplotlib .... vui lòng đăng câu trả lời của bạn.
pyplot.switch_backends()
. Nó có thể không hoạt động trong trường hợp của bạn.