gpt4 book ai didi

python - 有没有一种方便的方法来重绘实时数据的绘制图(matlibplot,python2.7)?

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:45 26 4
gpt4 key购买 nike

我从麦克风收到大量实时数据。数据集的长度是4000,我每秒接收5次。

我使用python2.7和matplotlib。了解数据集的想法:

如果安静

[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, 0, -1, 0, 0, 0, -1, 1, -2, 0, -2, -2, -8, -1, -1, 0, -2, -1, -2, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1,-1, 0, -1, -4, -1, 0, -1, 2, -1, 0, 2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, ...]

如果声音很大:

[-372, -37, -157, -143, 93, -212, 304, -225, 432, -177, 450, -79, 351, 40, 159, 147, -77, 213, -296, 222, -440, 173, -467, 77, -366, -41, -161, -147, 90, -215, 308, -225, 435, -175, 446, -77, 351, 42, 167, 147, -70, 210, -296,  -166, 456, -76, 374, 34, ...]

我的Python脚本:

def plot_data(data):
x = [i for i in range(0, 4000)]
plt.plot(x,data.data)
plt.show()

def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('/miro/rob01/platform/mics', platform_mics, show_data)
rospy.spin()

if __name__ == '__main__':
listener()

我想绘制数据并在每次获得新数据对象时重新绘制或更新。需要不断更新图表。

图表应如下所示: enter image description here

你知道有什么好方法吗?

最佳答案

可能有用的一件事是 animation matplotlib 提供的功能。他们有一些examples 。我认为this example看起来是一个简单的起点。本质上,您不必每次都重新绘制,而是更新 Line2D 的数据。目的。不过,我还没有尝试过使用 ROS 回调进行此操作,因此我无法说明它在您的用例中的工作效果如何。

我真的建议你使用 rqt_plot如果您已经在使用 ROS。它的设计正是为了满足您的需求,实时绘制主题数据,并且您可以使用 matplotlib 作为绘图后端(尽管我认为他们默认使用 pyqtgraph,这具有一些速度优势)。它甚至不需要您编写代码,它只是一个命令行调用

rqt_plot

然后会弹出一个 GUI,让您指定要可视化的主题。

作为最后一个建议,如果您想要绘制多个主题,我发现 Plot Juggler它是一个更好的替代方案,它还有一个额外的优点,您可以在 ROS 之外使用它,还可以可视化从文件静态加载的数据。

关于python - 有没有一种方便的方法来重绘实时数据的绘制图(matlibplot,python2.7)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54555503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com