如何在matplotlib中更新绘图或图形

时间:2017-06-15 17:59:48

标签: python matplotlib

我想知道如何每隔几秒更新matplotlib中的图形和/或绘图。代码:

import matplotlib.pyplot as plt
import numpy as np
axes = plt.gca()
axes.set_xlim([0,5])
axes.set_ylim([0,100])
X = [0, 1, 2, 3, 4, 5]
Y = [15, 30, 45, 60, 75, 90]
plt.plot(X, Y)
plt.xlabel('Time spent studying (hours)')
plt.ylabel('Score (percentage)')
plt.show()

2 个答案:

答案 0 :(得分:0)

您所写的内容是正确的,但为了使您的代码动态化,您可以将代码放在函数中并将X和Y坐标传递给函数。一个例子如下所示

def GrapgPlot(X, Y):


   "Your code"
GrapgPlot([0, 1, 2, 3, 4, 5],[90, 30, 45, 60, 75, 90])

在图中,如果您确定X轴不会改变,则可以在代码中修复X轴,并将Y轴值作为用户列表作为输入,并将其作为参数传递给函数。

如果你想要用户互动,那么最好的方法。使用循环更新X和Y轴列表,并将函数中的X和Y值作为参数传递

答案 1 :(得分:0)

使用time.sleep(1)可以查看更改并撤消Y以更新新数据。希望这是你想要的:

%matplotlib notebook

import time

import matplotlib.pyplot as plt

X = [0, 1, 2, 3, 4, 5]
Y = [15, 30, 45, 60, 75, 90]

fig, ax = plt.subplots()
ax.set_xlim([0,5])
ax.set_ylim([0,100])
ax.set_xlabel('Time spent studying (hours)')
ax.set_ylabel('Score (percentage)')
l, = ax.plot(X, Y)

for ydata in [Y, Y[::-1]]*2:
    l.set_ydata(ydata)
    fig.canvas.draw()
    time.sleep(0.5)