我制作了这段代码,根据一些txt文件的数据绘制图表(不断被其他程序更新)
k=0
xs=[]
ys=[]
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
def animate(i):
a=open("c:/python27/pos/12386.txt","r").read()
lines=a.split("\n") #gets the data from each line
for line in lines:
if len(line)>1:
ys.append(int(line[:line.find(".")]))
xs.append(len(xs)+1)
ax1.clear()
ax1.plot(xs,ys,linewidth=1.0)
ani=animation.FuncAnimation(fig,animate, interval=6000)
plt.show()
然而,每隔6秒钟,他就会重复一次图形,每隔6秒就会变成一个带有新实例的图案。
我想我应该在循环中运行一个命令,在再次绘制之前清除图形,或者逐个绘制每个新点。
答案 0 :(得分:2)
诀窍是列表xs
和ys
始终使用整个文本文件进行扩展。您需要做的是在添加文本文件的内容之前清除它们。
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
def animate(i):
a=open("c:/python27/pos/12386.txt","r").read()
lines=a.split("\n") #gets the data from each line
xs=[]
ys=[]
for line in lines:
if len(line)>1:
ys.append(int(line[:line.find(".")]))
xs.append(len(xs)+1)
ax1.clear()
ax1.plot(xs,ys,linewidth=1.0)
ani=animation.FuncAnimation(fig,animate, interval=6000)
plt.show()
或者,你只能读取新行并附加那些(如果更新只是添加行)。