2012-02-22 14 views
4

私はさまざまな外部機器(arduinosからオシロスコープまでの範囲)からデータを抽出するためにPythonを広く使用していましたが、私はプロットする単純な方法を探しています。はるかに複雑なものイーライBendersky http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/Pythonでの最小限のリアルタイムプロット

しかし、コードの範囲によってコードのこの素晴らしい作品に最もポインティングで What is the best real time plotting widget for wxPython?

さ:

は、スタックオーバーフロー上の同様の質問に、すでにいくつかの答えをあります私が探しているもの。私は、GUI、ラジオボタン、ノブとスライダー、またはそのようなものは必要ありませんが、ソースからストリームとしてリアルタイムでデータをプロットする、むしろ最小限のものを探しています。

ループ内でpylab.plot()やpylab.show()を呼び出すなどの解決策では、正しい動作が得られないようです。

誰にでも提案がありますか?

+0

のように見えるのだろうか? [matplotlib animations](http://www.scipy.org/Cookbook/Matplotlib/Animations) – cha0site

答えて

4

これはwxPythonの答えではありませんが、この種のものにはChacoを使用しました。これはかなり簡単です。 の良い例があります。これはあなたのユースケースと似ているかもしれません。tutorialです。したがって、あなたが他の理由でwxPythonに縛られていないなら、それは一見価値があるかもしれません。あなたが見つけたmatplotlibの例以外にも

+0

ありがとう! Chacoは非常に便利なように見えます。私はそれを使う予定のものを意味します。私はそれを調べます:) –

+0

参考資料、チュートリアルのリンクは2015年2月8日に壊れています – dcoz

+0

ありがとう、今修正されました。 – snim2

1

あなたはGUIループに信号を送信する必要がプロットリアルタイムを使用するには。インタラクティブモード(Ipython)を使用する場合は、スレッドを使用することもできます。

GUIとスレッドを処理するためのデコレータを作成しました。本当に簡単できれいな方法です。彼らはQTバックエンドのために働いています。 https://gist.github.com/Vrekrer/106c49a3ae6d420937aa

あなたがここに与えられたヒントを試してみましたIpythonのためのサンプルコードは、この

#%pylab qt 

#https://gist.github.com/Vrekrer/106c49a3ae6d420937aa  
import QThreadDecorators 
import time 

@QThreadDecorators.GUI_Safe 
def myplot(x,y): 
    #This will plot a new line for each call (ok for an example) 
    plot(x, y, 'bo-') 
    grid(True) 


@QThreadDecorators.AsQThread 
def myLoop(x): 
    y = x * nan 
    for i, xi in enumerate(x): 
     #get some data 
     time.sleep(1) 
     y[i] = xi**2 
     #plot in real time 
     myplot(x,y) 

#just call the function and it will run on a thread 
myLoop(arange(20)) 
関連する問題