juajua 发表于 2023-5-17 10:44:42

python求助-实时波形可视化

本帖最后由 juajua 于 2023-5-17 10:46 编辑

      for frame_number in range(args.nframes):
            frame = device.get_next_frame()
            antenna_samples = frame
            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的数据格式没有正确设置吗?求大神解答,蟹蟹!!{:10_281:}

isdkz 发表于 2023-5-17 10:45:28

根据代码,可以看到在每一帧中,都会创建一个新的line对象,并将新的数据点添加到line中。这会导致每一帧中都会有一个新的line对象,而旧的line对象却没有被删除,从而导致波形图不断地叠加在一起。

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

下面是修改后的代码:

import matplotlib.pyplot as plt
import 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
    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)


希望这个解答能够帮助到你!

juajua 发表于 2023-5-17 10:51:58

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

{:10_266:}我试了一下,还是没有波形

juajua 发表于 2023-5-17 11:09:06

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

在这个基础上,把动态坐标轴那个注释掉就可以有波形了{:10_250:}

歌者文明清理员 发表于 2023-5-17 20:52:26

juajua 发表于 2023-5-17 11:09
在这个基础上,把动态坐标轴那个注释掉就可以有波形了

解决了嘛?解决了的话改下标题哦,告诉大佬们~
页: [1]
查看完整版本: python求助-实时波形可视化