实时更新情节python

时间:2014-08-11 08:10:13

标签: python matplotlib

我想在python中制作实时更新图。我做过这样的事情:

import matplotlib.pyplot as plt
import os

plt.ion()
x = []
y = []
home = os.sep.join((os.path.expanduser('~'), 'Desktop'))


for i in range(-350,350):
    x.append(i)
    y.append(i*i)

    plt.plot(x, y, 'g-', linewidth=1.5, markersize=4)

    plt.show()
    plt.pause(0.1)
plt.pause(5)

plt.savefig(os.path.join(home, 'nowy', '2.png')) 

它有效,但我想知道是否有更好的lib?这个是慢的。如果有一些方法可以使X线从0到200而Y线会在获得新点时更新?

1 个答案:

答案 0 :(得分:0)

您可以单独更改第一个线图的值,而不是在每次迭代中绘制一条新线。这应该会导致一个值得注意的性能提升。

import matplotlib.pyplot as plt
import os

plt.ion()
line_handle = plt.plot(0, 0, 'g-', linewidth=1.5, markersize=4)  # create plot handle

x = []
y = []
home = os.sep.join((os.path.expanduser('~'), 'Desktop'))


for i in range(-350, 350):
    x.append(i)
    y.append(i*i)
    line_handle.set_ydata(y)  # change values instead of drawing another line
    line_handle.set_xdata(x)
    plt.draw()
    plt.show()
    plt.pause(0.1)
plt.pause(5)

plt.savefig(os.path.join(home, 'nowy', '2.png'))