我正在尝试使用this的帮助来创建类似于https://pythonprogramming.net/live-graphs-matplotlib-tutorial/的实时更新图形。我已经创建了一个更新图,即。每当我手动写入“ data.txt”时,图形都会更改。最后的while循环也成功写入data.txt,每秒保存一次。但是,该图不会更新。
我觉得我从根本上误解了文件读/写的工作原理,但是如果我能够手动更新文件,为什么底部的while循环不能这样做?
编辑:从那以后,我通过将文字放在另一个文件上来使其工作。但是,我仍然想知道为什么这种方法不正确。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
iterations = 10
z = 0.7
k = 3
def function():
global z, k
z = k * z * (1-z)
figure = plt.figure()
graph = figure.add_subplot(1, 1, 1)
def animate(i):
data = open('data.txt', 'r').read()
lines = data.split('\n')
xs = []
ys = []
for line in lines:
if len(line) > 1:
x, y = line.split(',')
xs.append(float(x))
ys.append(float(y))
graph.clear()
graph.plot(xs, ys)
livegraph = animation.FuncAnimation(figure, animate, interval=10)
plt.show()
while k < 4:
i = 0
file = open('data.txt', 'w+')
while i < iterations:
function()
file.write('%d,%f\n' % (i, z))
i += 1
file.close()
time.sleep(1)
k += 0.1