鱼C论坛

 找回密码
 立即注册
查看: 1889|回复: 4

python求助-实时波形可视化

[复制链接]
发表于 2023-5-17 10:44:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 juajua 于 2023-5-17 10:46 编辑
        for frame_number in range(args.nframes):
            frame = device.get_next_frame()
            antenna_samples = frame[i_ant, :, :]
            distance = distanceExample.compute_distance(antenna_samples)
            print("Distance:" + format(distance, "^05.3f") + "m")

            # 数据可视化
            ax = plt.subplot()
            # 设置x轴范围和标签
            ax.set_xlim(0, 100)
            ax.set_xlabel('Time/s')

            # 设置y轴范围和标签
            ax.set_ylim(0, 2)
            ax.set_ylabel('Distance/m')

            # 创建空的line对象
            line, = ax.plot([], [])

            # 添加新的数据点
            line.set_xdata(np.append(line.get_xdata(), frame_number))
            line.set_ydata(np.append(line.get_ydata(), distance))

            # 调整x轴范围
            ax.set_xlim(frame_number, frame_number+100)

            # 绘制波形图
            plt.draw()
            plt.pause(0.01)
以上是部分代码,我想实现距离-时间的实时波形,但是不知道哪里出了问题,现在可以读取到距离数据,但是在可视化中只有一个会刷新的坐标轴,没有显示出距离波形。是y的数据格式没有正确设置吗?求大神解答,蟹蟹!!
微信图片_20230517104306.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 10:45:28 | 显示全部楼层
根据代码,可以看到在每一帧中,都会创建一个新的  line  对象,并将新的数据点添加到  line  中。这会导致每一帧中都会有一个新的  line  对象,而旧的  line  对象却没有被删除,从而导致波形图不断地叠加在一起。

为了解决这个问题,可以将  ax  和  line  对象的创建放在循环外部,这样就可以在每一帧中更新  line  对象的数据,而不是创建一个新的  line  对象。同时,在每一帧中调用  plt.draw()  和  plt.pause()  方法来更新和显示波形图。

下面是修改后的代码:
import matplotlib.pyplot as pltimport numpy as np# 创建空的line对象和图像对象fig, ax = plt.subplots()line, = ax.plot([], [])# 设置x轴范围和标签ax.set_xlim(0, 100)ax.set_xlabel('Time/s')# 设置y轴范围和标签ax.set_ylim(0, 2)ax.set_ylabel('Distance/m')for frame_number in range(args.nframes):    frame = device.get_next_frame()    antenna_samples = frame[i_ant, :, :]    distance = distanceExample.compute_distance(antenna_samples)    print("Distance:" + format(distance, "^05.3f") + "m")    # 添加新的数据点    line.set_xdata(np.append(line.get_xdata(), frame_number))    line.set_ydata(np.append(line.get_ydata(), distance))    # 调整x轴范围    ax.set_xlim(frame_number, frame_number+100)    # 绘制波形图    plt.draw()    plt.pause(0.01)
希望这个解答能够帮助到你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-17 10:51:58 | 显示全部楼层
isdkz 发表于 2023-5-17 10:45
根据代码,可以看到在每一帧中,都会创建一个新的  line  对象,并将新的数据点添加到  line  中。这会导致 ...

我试了一下,还是没有波形
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-17 11:09:06 | 显示全部楼层
isdkz 发表于 2023-5-17 10:45
根据代码,可以看到在每一帧中,都会创建一个新的  line  对象,并将新的数据点添加到  line  中。这会导致 ...

在这个基础上,把动态坐标轴那个注释掉就可以有波形了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-17 20:52:26 | 显示全部楼层
juajua 发表于 2023-5-17 11:09
在这个基础上,把动态坐标轴那个注释掉就可以有波形了

解决了嘛?解决了的话改下标题哦,告诉大佬们~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表