2017-09-08 18 views
0

Ipython3を使用して、デフォルトのmatplotlibバックエンド 'TKAgg'とvirtualenvを使用してデータをプロットしています。私は新しいウィンドウでそれを示す私のデータをプロットするplot_scriptを持っており、それはしばらくの間働いています。その後、タブを使用してステートメントを自動完成させると、リンクされた画像に表示されるエラーメッセージが表示されてしまいます。 Aggバックエンドを使用すると、コースは終了しますが、データを調べる必要があるため(ズームインなど)、非常に面倒です。IPython + matplotlibのオートコンプリートが 'RuntimeError:メインスレッドにメインスレッドがありません'

Screenshot of the Ipython Window

私はおそらくスレッドがどのように動作するか理解していないのですが、非常に簡単ですplot_scriptで関数を使用しながら、GUIウィンドウを取得する方法があってはならないことを実現します。基本的に、私はちょうどplot_script.plot_something(pd.DataFrame)で関数を呼び出していますし、プロットがdiplayedさ:

from matplotlib import pyplot as plt 

def plot_something(data): 
    fig, ax = plt.subplots(2,2) 
    .... # Plot something 
    fig.savefig()  
    plt.show() 

    plt.close(fig) 
    fig.clear()  

どのように私はメインループに私のプロットを移動し、これはipythonに問題があるのですか?

答えて

0

正しいmatplotlib & tk eventloopをアクティブにする必要があります。これは一般的には%gui magic%gui tkとし、matplotlibの場合はで余分な設定を行います。%matplotlib tkを使用している可能性があります。

答えがまだない、特にターミナルでOpenCVを使用するこの種の問題を引き起こすライブラリが多数あります。IPythonはメインスレッドのパニックを起こす可能性がありますが、再現性のある方法ではなく、デバッグおよび修正されませんまだ。

魔法を使っても解決できない場合は、IPythonトラッカーでバグを開いてください。

+0

ありがとうございました。今は起動時に '%gui tk'と '%matplotlib tk'を使用します。異なる行動に慣れていなければなりません;)。週末までにエラーを気付かない場合、または2回目の発言が正しければ、私はあなたの答えを受け入れます。 – philster

+0

悲しいことに私はupvoteできません.... 15repの上に私が推測することはありません;) – philster

+0

何か心配、何か助けになることを喜んで。ヒント:他のスタック交換サイトにサインアップしてください。十分な数だけサインインすると100リペアになります。 – Matt

関連する問題