【问题标题】:real time plot in Rodeo with python 3.x installed安装了 python 3.x 的 Rodeo 实时绘图
【发布时间】:2017-07-29 20:40:03
【问题描述】:

我正在尝试遵循一些生成实时图的指南,例如:real-time plotting in while loop with matplotlibhttp://thread.gmane.org/gmane.comp.python.matplotlib.general/35705

但是,我相信示例代码是使用 python 2.7 编译的。当我尝试编译我的时,我没有看到正在更新的实时绘图。这是因为python 3不支持吗?还是我错过了图书馆或其他什么?只有当我停止 while 循环时,我才会看到绘制的最后一个值。我使用 Rodeo 作为我的 IDE;这会阻止我查看实时情节吗?

import serial 
import numpy as np
import matplotlib.pyplot as plt

def plotlive():
    plt.plot(ard_dat,'o')
    plt.xlabel('count', fontsize=12)
    plt.ylabel('reading', fontsize=12)
    plt.legend(loc='upper right')
ard_dat=[]
plt.ion()
cnt=0
arduinoSerialData = serial.Serial('com5',9600)

while True:
    while (arduinoSerialData.inWaiting()==0):
        pass 

        srdata = arduinoSerialData.readline()
        try:
            intstrdata = int(srdata)
        except ValueError:
            pass 
        ard_dat.append(intstrdata)
        drawnow(plotlive)
        plt.pause(.00001) 
        cnt+=1
        if (cnt>50):
            ard_dat.pop(0)

【问题讨论】:

    标签: python matplotlib real-time


    【解决方案1】:

    代码中没有特定的 python 2 或 3 命令,因此您可以将其排除在外。

    我不推荐使用drawow。请直接致电plotlive()。然而,这只是一个建议,因为drawnow 是一个非常无用的包,但它不会阻止代码运行。

    假设串行工作正常,则问题中的代码在作为脚本运行时应生成更新图。

    重点是:Rodeo 无法制作动画。 请参阅此问题:https://github.com/yhat/rodeo/issues/488 原因是它使用了类似笔记本的输出机制。在 Jupyter notebook 中,您实际上可以将后端设置为交互模式(%matplotlib tk%matplotlib notebook),但这在 Rodeo 中显然是不可能的。

    Rodeo 似乎也没有在其 IDE 之外将某些代码作为 python 脚本运行的选项。因此,我们的想法是要么使用不同的 IDE,要么至少在 Rodeo 之外运行动画。

    【讨论】:

    • 太好了,感谢您提供的信息。我是 jupyter 的新手,所以必须做一些阅读和实验。我对这个后端交互模式的概念很陌生。如果您知道任何初始资源,请告诉我。
    • 我尝试在顶部添加 %matplotlib notebook 并在 jupyter notebook 中运行相同的代码,但没有绘制任何内容。但是,我能够输出从 arduino 中提取的 40 个值的图,因此绘图似乎有效(如果它是静态列表),我的代码中的某些东西不是吗?
    • 抱歉,虽然我确实说过问题中的代码在作为脚本执行时可能会运行,但我不确定它是否会在 Jupyter 中运行。我说的是一般动画可以在 Jupyter 中运行。第一步,将您的代码作为脚本运行,看看它是否有效。如果您还希望能够在 jupyter 中运行它,则可能需要对其进行调整。
    • 我使用了这段代码,它在 jupyter 中工作。 gist.github.com/brandoncurtis/33a67d9d402973face8d谢谢你指引我正确的方向。
    猜你喜欢
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2019-08-04
    • 2018-04-02
    • 2011-04-18
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多