pyplot - 图形被刷新的问题

时间:2017-04-16 23:51:14

标签: python matplotlib

我制作了这段代码,根据一些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秒就会变成一个带有新实例的图案。

我想我应该在循环中运行一个命令,在再次绘制之前清除图形,或者逐个绘制每个新点。

1 个答案:

答案 0 :(得分:2)

诀窍是列表xsys始终使用整个文本文件进行扩展。您需要做的是在添加文本文件的内容之前清除它们。

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()

或者,你只能读取新行并附加那些(如果更新只是添加行)。