2013-08-13 7 views
5

Ich bin Code mit PyQt4 geschrieben, die Qt4Agg Backplat von Matplotlib verwendet, um Live-Plots in Windows anzuzeigen. Gleichzeitig möchte ich Matplotlib im Hintergrundthread verwenden, um (verschiedene) Figuren zu erzeugen, die nur in einer Datei gespeichert werden, die nicht auf dem Bildschirm angezeigt werden.mit interaktiven und nicht interaktiven Backends innerhalb eines Programms

kann ich Qt4Agg im Hintergrund-Thread, aber ich bin ein Bündel von

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

Warnungen bekommen, und auch in einigen Fällen stürzt.

Soweit ich das sehe, unterstützt matplotlib zur Zeit nur ein einziges Backend zu verwenden (welches über switch_backend geändert werden kann, aber das alle vorhandenen Zahlen schließt). Gibt es eine Möglichkeit, diese Einschränkung zu umgehen und ein Backend mit Zahlen zu belegen?

Antwort

6

Soweit ich weiß, nur wenn Sie nicht die pyplot-Schnittstelle verwenden.

Zum Beispiel der vollen OO-Schnittstelle für eine einfache Handlung mit:

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

Jede Art und Weise, um Sie mehr als nur eine +1 für diese Antwort? Du hast meinen Tag wirklich gemacht. – eudoxos

+1

:-) Danke dafür. +1 ist jedoch genug. + Wenn wir uns jemals auf einer Python-Konferenz treffen, würde ich kein Bier ablehnen. – pelson

Verwandte Themen