Python中的最小实时绘图

Python中的最小实时绘图,python,wxpython,matplotlib,Python,Wxpython,Matplotlib,我一直在广泛使用python从各种外部设备(从arduinos到示波器)提取数据,我正在寻找一种简单的方法来绘制数据 对于堆栈溢出的类似问题,已经有了一些答案: 大多数人都指向Eli Bendersky的这段代码 但是代码的范围要比我想要的复杂得多。我正在寻找一种非常简约的东西,它只需要在数据从源流出来时实时绘制数据,而不需要GUI、单选按钮、旋钮和滑块,或者类似的东西 在循环中调用pylab.plot()或pylab.show()之类的解决方案似乎没有给出正确的行为 有人有什么建议吗?好吧

我一直在广泛使用python从各种外部设备(从arduinos到示波器)提取数据,我正在寻找一种简单的方法来绘制数据

对于堆栈溢出的类似问题,已经有了一些答案:

大多数人都指向Eli Bendersky的这段代码

但是代码的范围要比我想要的复杂得多。我正在寻找一种非常简约的东西,它只需要在数据从源流出来时实时绘制数据,而不需要GUI、单选按钮、旋钮和滑块,或者类似的东西

在循环中调用pylab.plot()或pylab.show()之类的解决方案似乎没有给出正确的行为


有人有什么建议吗?

好吧,这不是wxPython的答案,但我用过这种方法,而且非常简单。有一个很好的示例,它可能与您的用例相似,并且是一个很好的示例。因此,如果您由于其他原因没有绑定到wxPython,那么这可能值得一看。

除了您找到的matplotlib示例之外,这里还有wx.lib.plot和一些答案:

要使用实时打印,您需要向GUI循环发送信号。如果您使用交互式模式(Ipython),那么您可能还希望使用线程

我已经编写了一些装饰程序来以一种非常简单和干净的方式处理GUI和线程。他们为QT后端工作。

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) )

你试过这里的提示了吗?谢谢Chaco看起来非常有用,并且适合我将要使用它的那种东西。我将对此进行调查:)仅供参考,教程链接从2015年2月8日起中断