实时更新图表 Python

1 投票
1 回答
593 浏览
提问于 2025-04-18 16:48

我想在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')) 

这个方法可以用,但我在想有没有更好的库可以使用?这个库运行得太慢了。而且有没有办法让X轴从0到200,Y轴在获取新数据时能够更新呢?

1 个回答

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

撰写回答