- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我从麦克风收到大量实时数据。数据集的长度是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()
我想绘制数据并在每次获得新数据对象时重新绘制或更新。需要不断更新图表。
你知道有什么好方法吗?
最佳答案
可能有用的一件事是 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/
在javascript中,我可以这样写 console.log( person.name || person.nickname || '-' ) 然后会先查找name字段,如果找不到,会回退到nick
在为通用接口(interface)编写回调时,定义他们自己负责创建和访问的本地数据可能很有用。 在 C 中,我只使用一个空指针,类 C 示例: struct SomeTool { int ty
我是一名优秀的程序员,十分优秀!