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