2017-05-06 95 views
0

這裏我做了一個簡單的程序,它通過從矩陣(NxN)'config'中獲取具有隨機值(-1到1)的值來填充2-D網格。 我希望這個情節是動畫的,這樣當我在Matrix中更新這些值時,情節會得到更新。 我看過一些動畫代碼,但這不是我正在尋找的。 有人可以指向正確的方向。 謝謝。在python中動畫Colormesh圖

import numpy as np 
from numpy.random import rand 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

f = plt.figure(figsize=(15, 15), dpi=80); 
N=10 
n_=1 
i=1 

config = 2*np.random.uniform(2, size=(N,N))-3 
print(config) 

X, Y = np.meshgrid(range(N), range(N)) 
#print(X) 

plt.pcolormesh(X, Y, config, cmap=plt.cm.RdBu); 
plt.title('Time=%d' % i); 
plt.axis('tight') 
plt.show() 

我們可以使一個新的矩陣/張量 「animate_grid」 與(TxNxN),即更新後的值的NxN矩陣(任何值甚至隨機)對於每個時間步長T. 例如

T=0 
[[-0.244608 -0.71395497 -0.36534627] 
[-0.44626849 -0.82385746 -0.74654582] 
[ 0.38240205 -0.58970239 0.67858516]] 
T=1 
[[-0.46084 -0.3413957 -0.3453345627] 
[-0.43626849 -0.6385746 -0.4654582] 
[ 0.8240205 -0.8970239 0.37858516]] 
T=2 
[[-0.4546084 -0.9565497 -0.534627] 
[-0.2546849 -0.8345746 -0.465654582] 
[ 0.4460205 -0.4660239 0.6858516]] 

等等。

+0

你能較詳細地解釋這些其他的答案並沒有幫助你在多遠他們沒有?你能不能更詳細地解釋你期望你的代碼產生什麼?你將如何改變矩陣?請通過[編輯]你的問題來完成。 – ImportanceOfBeingErnest

+0

對於每個時間步長T,我們可以用(TxNxN),即更新值的N×N矩陣(任何值甚至是隨機的)創建新的矩陣/張量「animate_grid」。 –

回答

1

該動畫將像其他情況一樣工作。你需要一個更新圖的函數和一個定期調用這個更新函數的例子FuncAnimation

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
N=10 
T=17 
config = np.random.rand(T, N,N) 
X, Y = np.meshgrid(range(N+1), range(N+1)) 

fig = plt.figure(figsize=(5, 5), dpi=80) 
plt.pcolormesh(X, Y, config[0,:,:], cmap=plt.cm.RdBu) 
plt.title('Time=%d' % 0) 

def update(i): 
    plt.pcolormesh(X, Y, config[i,:,:], cmap=plt.cm.RdBu) 
    plt.title('Time=%d' % i) 

ani = animation.FuncAnimation(fig, update, frames=config.shape[0], 
           interval = 100, repeat = True) 

plt.show() 

enter image description here

+0

謝謝!這正是我所期待的。非常感謝。 –