现在绘制和Matplotlib [英] Draw now and Matplotlib

查看:53
本文介绍了现在绘制和Matplotlib的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在开展一个项目,该项目涉及获取模拟读数,并将它们实时映射到图表上.所以为了完成这个,我通过一个 Arduino 模拟端口运行一个光电阻器,并通过 python 3.4.3 读取该数据.在python方面,我有maplotlib,并安装了drawow.如下所示的代码将绘制电阻将读取的第一个数据标记,但不会实时更新.但是,如果更改电阻,然后重新启动程序,它将连续绘制新值.我想要做的是在更改光电电阻器的值时更改图形上的值.

I am currently working on a project that involves taking analog readings, and mapping them real time on a graph. So to complete this I am running a photo resister through an Arduino Analog port and am reading that data via python 3.4.3. On the python side I have maplotlib, and drawnow installed. The code as it is shown below will plot the first data marker that the resistor will read, but will not update it real time. However if I change the resistance and then restart the program it will then plot the new value continually. What I want it to do is change the value on the graph as I change the value of the photo resistor.

import serial # import from pySerial
import numpy # import library from Numerical python
import matplotlib.pyplot as plt # import Library from matplotlib
from drawnow import drawnow # import lib from drawnow

ConF = [] # create an empty array for graphing
ArduinoData = serial.Serial('com3',9600) # set up serial connection with    arduino
plt.ion() # tell matplotlib you want interactive mode to plot data
cnt = 0

def makeFig(): # creat a function to make plot
    plt.plot(ConF, 'go-')

while True: # loop that lasts forever
    while (ArduinoData.inWaiting()==0): # wait till there is data to plot
         pass # do nothing

    arduinoString = ArduinoData.readline()
    dataArray = arduinoString 
    Con = float(arduinoString) # turn string into numbers
    ConF.append(Con) # addinf to the array.

    drawnow(makeFig)  # call draw now to update 
    plt.pause(.000001)
    cnt=cnt+1 
    if(cnt>50):
         ConF.pop(0)

我不确定我的错误在哪里,没有错误消息......它只是一遍又一遍地绘制相同的数据点.欢迎任何帮助.

I am not sure where my mistake is, there is no error message... it just plots the same data point over and over. Any help would be most welcome.

推荐答案

类似的东西

fig, ax = plt.subplots()
ln, = ax.plot([], [], 'go-')
while True:
    x, y = get_new_data()
    X, Y = ln.get_xdata(), ln.get_ydata()
    ln.set_data(np.r_[X, x], np.r_[Y, y])
    fig.canvas.draw()
    fig.canvas.flush_events()

应该可以解决问题.

这篇关于现在绘制和Matplotlib的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆