Я пробую это и запускаю:
%matplotlib tk
N = 100
updateInterval = 50
grid = randomGrid(N)
fig, ax = plt.subplots()
img = ax.imshow(grid, interpolation='nearest')
ani = animation.FuncAnimation(
fig,
update,
fargs=(img, grid, N, ),
frames=10,
interval=updateInterval,
save_count=50
)
plt.show()
Я только очищаю код, удаляя argparse, и добавляю '% matplotlib tk', как вы говорите, в одну ячейку и запускаю.
Редактировать # 1
Чтобы помочь вам с вашим вопросом в комментариях, я напишу эту функцию.
def makeGrid(grid, text):
for i, line in enumerate(text.splitlines()[1:]):
print(line)
for j, point in enumerate(line):
if point != " ":
grid[i][j] = 255
return grid
Попробуйте это:
%matplotlib tk
N = 50
updateInterval = 50
grid = randomGrid(N)
grid.fill(0)
grid = makeGrid(grid, '''
x
x x
xx xx xx
x x xx xx
xx x x xx
xx x x xx x x
x x x
x x
xx
''')
fig, ax = plt.subplots()
img = ax.imshow(grid, interpolation='nearest')
ani = animation.FuncAnimation(
fig,
update,
fargs=(img, grid, N, ),
frames=10,
interval=updateInterval,
save_count=50
)
plt.show()
Edit # 2
Мне это нравится, и я обновляю, как изменить сетку ...
gliderstr = '''
--x
x-x
-xx
'''
gunstr = '''
------------------------x
----------------------x-x
------------xx------xx------------xx
-----------x---x----xx------------xx
xx--------x-----x---xx
xx--------x---x-xx----x-x
----------x-----x-------x
-----------x---x
------------xx
'''
def fill_grid(grid, iterable, value=255):
for x, y in iterable:
grid[x][y] = value
return grid
def iter_text(text, accept='x', x=0, y=0):
for i, line in enumerate(text.splitlines()):
for j, ch in enumerate(line):
if ch == accept:
yield i + x, j + y
Используйте как:
%matplotlib tk
N = 100
update_interval = 50
grid = make_grid(N)
fill_grid(grid, iter_text(gunstr, 20, 20))
fill_grid(grid, iter_text(gliderstr, 0, 0))
fig, ax = plt.subplots()
img = ax.imshow(grid, interpolation='nearest')
ani = animation.FuncAnimation(
fig,
update,
fargs=(img, grid, N, ),
frames=10,
interval=update_interval,
save_count=50
)
plt.show()