2013-08-13 9 views
5

PyQt4で書かれたコードを実行しています。matplotlibのQt4Aggバックエンドを使用してウィンドウにライブプロットを表示します。同時に、私はバックグラウンドスレッドでmatplotlibを使用して、画面に表示されていない、ファイルにのみ保存される(異なる)図形を生成したいと考えています。1つのプログラム内でインタラクティブで非インタラクティブなバックエンドを使用する

私は、バックグラウンドスレッドでQt4Aggを使用することができますが、私は

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

警告の束を取得し、また、いくつかのケースでクラッシュしています。

私が見ている限り、matplotlibは現在、任意の時点で1つのバックエンドのみを使用することをサポートしています(switch_backendで変更できますが、既存の数字はすべて閉じます)。この制限を回避し、数字単位のバックエンドを割り当てる方法はありますか?

答えて

6

私が知っている限り、pyplotインターフェイスを使用しない場合に限ります。例えば

、簡単なプロットのための完全なオブジェクト指向のインタフェースを使用して:

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

あなただけの1 +1この回答のためのより多くを与えるために、任意の方法は?あなたは本当に私の日を作りました。 – eudoxos

+1

:-)ありがとう。 +1でも十分です。 +私たちがPythonカンファレンスで会うなら、私はビールを止めません。 – pelson

関連する問題