【问题标题】:python real time plot using funcanimation giving blank graphpython实时绘图使用funcanimation给出空白图
【发布时间】:2021-03-23 11:58:20
【问题描述】:

我正在尝试使用 matplotlib 的 FuncAnimation 类绘制实时图形。数据来自 arduino 使用 pyserial 库。我尝试使用以下代码实时绘图,但图表为空,我可以看到轴、刻度等,但看不到绘图。谁能帮助我在这里做错了什么? 提前谢谢你。

from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
import serial
import os
import numpy as np
import datetime
import pandas as pd


fig = plt.figure()  

port= 'COM10'
baudrate = 9600
timeout = 2

ser = serial.Serial(port=port, baudrate=baudrate, timeout=timeout)

def animate(i):
    j = 0  
    while True:
        try:
            loadcells = ser.readline()
            loadcells = loadcells.decode('utf-8').rstrip().replace('\t','').split(',')
            print(loadcells)
            loadcell1 = float(loadcells[0])
            # loadcell2 = loadcells[1]
            plt.cla()
            plt.plot(loadcell1)
            plt.pause(0.001)
            j+=1
            # plt.plot(loadcell2)
        except Exception as e:
            print(e)
            continue
        except KeyboardInterrupt as e1:
            print(e1)
            ser.close()

        

anim = FuncAnimation(fig, animate,    
                    frames = 200,  
                    interval = 0.1,  
                    blit = False) 

plt.tight_layout()
plt.show()

【问题讨论】:

    标签: python-3.x matplotlib animation real-time pyserial


    【解决方案1】:

    animate() 中不应有无限循环。 FuncAnimation 通过以预定义的时间间隔 (interval=0.1) 重复调用 animate() 来工作。

    您需要重写您的animate() 函数,在该函数中读取串行端口、绘制结果并返回(也不需要pause())。

    【讨论】:

    • Ok 会试试这个并更新你。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2020-10-02
    相关资源
    最近更新 更多