Меня попросили автоматизировать ячейку, аналогично «Игре жизни», одной из задач было сделать так, чтобы она отображала визуализацию каждого кадра, а затем также анимацию всех кадров. Кроме того, он также должен генерировать график количества клеток в каждом состоянии во время моделирования. И вот где это идет не так. Это мой код:
fig = plt.figure()
board = np.arange(10000).reshape((100, 100))
ims = []
for i in range(10):
board[i * 10, i * 10] = 0
ims.append([plt.imshow(board)])
# plt.show() # If that line isn't a comment then it generates error
h = [0, 0, 0]
h[0] = np.arange(10)
h[1] = np.arange(10, 20)
h[2] = np.arange(20, 30)
fig.suptitle("Simulation") # Adding title
cbar = fig.colorbar(ims[0][0]) # Adding a colorbar
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True, # Making animation
repeat_delay=1000)
plt.show() # Showing it
# When closing animation window it generates 'after script' message
plt.plot(h[0], color='red', label="zeros")
plt.plot(h[1], color='magenta', label='ones')
plt.plot(h[2], color='blue', label='twos')
plt.legend()
plt.show()
Таким образом, при его запуске генерируется это сообщение в терминале:
invalid command name "140161660065904_on_timer"
while executing
"140161660065904_on_timer"
("after" script)
Однако все работает нормально. К сожалению, когда я раскомментирую эту строку:
# plt.show() # If that line isn't a comment then it generates error
Это показывает сообщение об ошибке, подобное этому:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "/usr/lib/python3.7/tkinter/__init__.py", line 749, in callit
func(*args)
File "/usr/lib/python3/dist-packages/matplotlib/backends/_backend_tk.py", line 346, in
idle_draw
self.draw()
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 10, in draw
_backend_tk.blit(self._tkphoto, self.renderer._renderer, (0, 1, 2, 3))
File "/usr/lib/python3/dist-packages/matplotlib/backends/_backend_tk.py", line 88, in blit
photoimage.blank()
File "/usr/lib/python3.7/tkinter/__init__.py", line 3548, in blank
self.tk.call(self.name, 'blank')
_tkinter.TclError: invalid command name "pyimage100"
Segmentation fault (core dumped)
, но повторяется для каждого кадра моей анимации. Кто-нибудь знает, о чем это может быть?