|
发表于 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[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)
复制代码
希望这个解答能够帮助到你! |
|