2017-05-06 101 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

谢谢!这正是我所期待的。非常感谢。 –