2017-06-15 98 views
0

我想知道如何每隔几秒更新一次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() 
+0

什么是你想更新的新数据/图表?您希望如何更新它,举办活动或几秒钟后? –

+0

每隔几秒 – Qwertykey

+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值作为参数传递

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)