我想要一个实时的情节线而不是使用Matplotlib的一系列点

时间:2015-02-01 16:13:55

标签: matplotlib

此程序工作正常,但实时情节显示一系列点。我宁愿看到一条连接点或简单线条的线。在下面,#是我已经尝试过的,但是没有用。

import time, serial, sys
from time import sleep
import numpy as np
import matplotlib.pyplot as plt
serPort = 'COM5'
dataFile=open("loggedData.dat", "w");
ser =serial.Serial(serPort, 9600)
sys.stdout.flush()
#plt.setp(lines,'color','r','linewidth',2.0)
fig=plt.figure()
plt.ion()
plt.show()
while True:
    line = ser.readline()
    print line;
    p=line.split(' ')
    dataFile.write(line)
    #plt.setp(line,'color','r','linewidth',2.0)
    #plt.plot((p[0]), (p[1]), 'drawstyle', '-')
    #plt.plot((p[0]), (p[1]), '-')
    plt.plot((p[0]), (p[1]), 'ro')
    plt.draw()

1 个答案:

答案 0 :(得分:0)

我猜你需要跟踪前一点,以便Matplotlib可以在两点之间画一条线。

prev = None
while True:
    line = ser.readline()
    print line;
    p=line.split(' ')
    dataFile.write(line)
    if prev is not None:
        plt.plot((prev[0], p[0]), (prev[1], p[1]), 'r')  # draw the line
        plt.plot((p[0]), (p[1]), 'ro')  # draw the dot
    prev = (p[0], p[1])
    plt.draw()

顺便说一下,我不确定你的代码是否真的在做你想要的。  p=line.split(' ')为您提供传递给绘图函数的字符串列表。您可能希望将它们转换为数字:p = [float(i) for i in line.split(' ')