2016-04-07 8 views
0

最近、Arduinoと相互作用するpythonスクリプトと、LIDARを使用して部屋をマップするハードウェアを構築しました。すべてうまくいくが、maptotlibで生成されたプロットをクリックするたびに、コンピュータが壊れて実行中のスクリプトがクラッシュする。これは、私がこれを実行するために300ドルのコンピュータを与えられたこともあって、それはあまり強力ではありません。しかし、私は300ドルのコンピュータでもマウスクリックを処理できるはずです。matplotlibプロットのすべてのマウスクリックを無視する

matplotlibでマウスのクリックを完全に無視して、コンピュータがフリークアウトしてスクリプトをクラッシュさせないようにするにはどうすればよいですか?

これが正しい解決策でない場合は、より良い解決策はありますか?

編集:これはインタラクティブなプロットセッションです(古いデータを新しいデータで置き換えるだけです)。plot.ion()というコマンドがありません。だから私はプロットを保存して表示するだけではありません。 Arduinoは常にデータを送信します。

答えて

1

あなたのプロットにクリックイベントをバイパスして試すことができます:

import matplotlib.pyplot as plt 

fig = plt.figure() 

plt.axes(xlim = (0, 3), ylim = (0, 3)) 

def onclick(event): 
    pass 

fig.canvas.mpl_connect('button_press_event', onclick) 

plt.show() 

が、私は、これは動作しないだろう。私は(ものは上記動作しない場合)ソリューションとしてお勧めします(それを表示せずに)あなたのプロットを作成し、それをファイルに保存することです。(例えばsubprocess使用)Pythonは、画像を開く作る

plt.savefig('fname.png') 
plt.close() 

たよりお使いのOSで好きな外部ツールを使用してください。

私はこれはあなたのスクリプトがクラッシュする可能性のある何らかの種類のパッケージの互換性がないかもしれないと考えているからです(mplからのバックエンドまたはmplで使用している他のライブラリのバックエンドかもしれません)。このような場合は、問題を解決するためにさらに多くの情報が必要です。

+0

ありがとう、私はそれを試してみます。また、編集内容をお読みください。 –

1

これは、ハードウェアを変更することで簡単に解決できるかもしれないと思います。一時的にマウスを外したり、トラックパッドにテープを貼ったりして、

クラッシュするスクリプトは何らかの方法でマウスクリックを常に処理するので、クラッシュの原因がわからない場合は、クリックがないことを確認する方がよい場合があります。

関連する問題