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:}
根据代码,可以看到在每一帧中,都会创建一个新的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)
希望这个解答能够帮助到你! isdkz 发表于 2023-5-17 10:45
根据代码,可以看到在每一帧中,都会创建一个新的line对象,并将新的数据点添加到line中。这会导致 ...
{:10_266:}我试了一下,还是没有波形 isdkz 发表于 2023-5-17 10:45
根据代码,可以看到在每一帧中,都会创建一个新的line对象,并将新的数据点添加到line中。这会导致 ...
在这个基础上,把动态坐标轴那个注释掉就可以有波形了{:10_250:} juajua 发表于 2023-5-17 11:09
在这个基础上,把动态坐标轴那个注释掉就可以有波形了
解决了嘛?解决了的话改下标题哦,告诉大佬们~
页:
[1]