带有' plotfile'的Python实时情节方法

时间:2017-01-05 18:36:11

标签: python animation matplotlib plot

我必须阅读" file.txt"中的数字。实时(另一个程序在其中保存一对数字并每1/10秒覆盖一次)。以下脚本可以绘制数字,但只能绘制在我启动绘图时读取的数字。我试过plt.ion(),但在这种情况下它没有做任何事情。我希望每次都能阅读" file.txt"已更新。

我使用的代码是:

import matplotlib.pyplot as plt

plot.plotfile('file.txt', delimiter=' ', cols=(1, 0), 
              names=('Volume', 'Tempo'), marker='o')
plt.show()

如果现场情节不能用' plotfile'方法我该怎么做? (我尝试了CSV方法和其他stackoverflow解决方案,但每次都读取文件失败)

感谢

1 个答案:

答案 0 :(得分:0)

您需要做的是创建一些自动循环文件读取和图形绘制操作的方法。这可以通过for循环来完成,但我的首选方法可能涉及matplotlib.animation.FuncAnimation()。对于你的情况,10 fps可能不够快,你将不得不担心blitting,但这是一个很好的做法,将帮助你从MPL获得更好的速度。 FuncAnimation()提供的example使用blitting,只需调用艺术家绘制的行来更新它的y数据。如果你使用plt.plotfile(),那么更新艺术家并让它正确获取新数据可能要困难得多,所以我建议你自己阅读数据,并调用artists = plt.plot()(或类似的)。这使您可以简单地更新线条艺术家的数据,而无需重新绘制整个图形:lineartist.set_ydata(dataReadFromFile)