我是python和matplotlib语言的新手,为我丈夫做点什么。
我希望你们能帮助我。
我想使用Open提取文件,阅读它,并使用它的值更新图表。
听起来很简单吧?在实践中并没有那么多。
这是我到目前为止打开并绘制文件图表的内容。这样可以正常工作1次。
import matplotlib.pyplot as plt
fileopen = open('.../plotresults.txt', 'r').read()
fileopen = eval(fileopen) ##because the file contains a dict and security is not an issue.
print(fileopen) ## So I can see it working
for key,value in fileopen.items():
plot1 = value
plt.plot(plot1, label=str(key))
plt.legend()
plt.show()
现在我想动画图表或更新它,以便我可以看到数据的变化。我试图使用matplotlib的动画功能,但它超出了我目前的知识。
是否有一种简单的方法来更新此图表,比如说每5分钟一次?
注意: 我尝试使用Schedule但它打破了程序(可能是计划之间的冲突,并且matplotlib数字打开了?)。
任何帮助都将深表感谢。
答案 0 :(得分:0)
不幸的是,您只是浪费时间尝试使用matplotlib的动画功能或使用matplotlib OO界面来获得一个干净的解决方案,而不是。
作为一个肮脏的黑客你可以使用以下内容:
from threading import Timer
from matplotlib import pyplot as plt
import numpy
# Your data generating code here
def get_data():
data = numpy.random.random(100)
label = str(data[0]) # dummy label
return data, label
def update():
print('update')
plt.clf()
data, label = get_data()
plt.plot(data, label=label)
plt.legend()
plt.draw()
t = Timer(0.5, update) # restart update in 0.5 seconds
t.start()
update()
plt.show()
然后通过Timer
旋转第二个线程。所以要杀死脚本,你必须在控制台上点击Ctrl-C
两次。
如果在pyplot
机器的范围内以这种简单的方式有更清洁的方法,我自己会感兴趣。
以斜体编辑。