2013-08-13 47 views
5

Tôi đang chạy mã được viết bằng PyQt4 sử dụng phụ trợ Qt4Agg của matplotlib để hiển thị ô trực tiếp trong cửa sổ. Đồng thời, tôi muốn sử dụng matplotlib trong chủ đề nền để tạo ra các số liệu khác nhau chỉ được lưu vào tệp, không được hiển thị trên màn hình.sử dụng chương trình phụ trợ tương tác và không tương tác trong một chương trình

tôi có thể sử dụng Qt4Agg trong thread nền, nhưng tôi nhận được một bó

QPixmap: It is not safe to use pixmaps outside the GUI thread 

cảnh báo, và cũng có thể bị treo trong một số trường hợp. Theo như tôi thấy, matplotlib hiện tại chỉ hỗ trợ sử dụng một chương trình phụ trợ tại bất kỳ thời điểm nào (có thể thay đổi qua switch_backend, nhưng điều đó đóng tất cả các số liệu hiện có). Có cách nào để làm việc xung quanh giới hạn này, và để gán phụ trợ cho mỗi con số?

Trả lời

6

Theo hiểu biết của tôi, chỉ khi bạn không sử dụng giao diện pyplot.

Ví dụ, sử dụng giao diện OO đầy đủ cho một âm mưu rất đơn giản:

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 
from matplotlib.figure import Figure 

fig = Figure() 
canvas = FigureCanvas(fig) 
ax = fig.add_subplot(1,1,1) 
ax.plot([1,2,3]) 
canvas.print_figure('test.png') 

HTH

+0

Bất kỳ cách nào để cung cấp cho bạn nhiều hơn chỉ là một 1 cho câu trả lời này? Bạn thực hiện ngày của tôi, thực sự. – eudoxos

+1

:-) Cảm ơn vì điều đó. 1 là đủ mặc dù. + Nếu chúng ta gặp nhau tại một hội thảo Python, tôi sẽ không từ chối một ly bia. – pelson

Các vấn đề liên quan