1 回答

TA貢獻1839條經驗 獲得超15個贊
我發現,這不是plt.imshow()和 動畫同時出現的問題,而是我的循環本身的問題。一旦修好,它就起作用了。這是代碼:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
grid = np.zeros((11,11), dtype=np.int16)
def neighbors(x,y):
#cell = grid[x,y]
n_cells = [grid[x-1, y+1], grid[x, y+1], grid[x+1, y+1],
grid[x-1, y], grid[x+1, y],
grid[x-1, y-1], grid[x, y-1], grid[x+1, y-1]]
return sum(n_cells)
grid[3:6,5]=1
newgrid = grid.copy()
def updatefig(i):
for x in range(10):
for y in range(10):
if grid[x,y]==0:
if neighbors(x,y)==3:
newgrid[x,y]=1
else:
if neighbors(x,y)<2 or neighbors(x,y)>3:
newgrid[x,y]=0
def update_grid():
global grid
grid = newgrid.copy()
update_grid()
plt.imshow(newgrid, cmap='binary')
ax = plt.gca()
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_xticks([])
ax.set_yticks([])
#plt.imshow(grid, cmap='binary')
ani = FuncAnimation(fig, updatefig, interval=100)
plt.show()
我已經imshow在循環內部使用了,但即使我取消注釋動畫函數上面的那個,它仍然可以工作。
添加回答
舉報