imshow animation stellt nur ein state dar
Verfasst: Samstag 4. Juni 2022, 19:54
Hi, ich habe folgendes Problem:
Ich möchte eine state machine programmieren und dessen states bzw. verschiedenen Generationen dann per imshow animation darstellen. Die state machine funktioniert soweit ohne Probleme per Ausgabe in der Console, jedoch benötige ich eine Hilfestellung zu imshow. Ich habe versucht die verschiedenen states per animate() Fkt zi visualisieren, jedoch bekomme ich nur den ersten State ausgegeben. Hat jemand evtl. einen Tipp, was ich versuchen könnte oder wo mein Logikfehler liegt.
Vielen Dank im Vorraus
Ich möchte eine state machine programmieren und dessen states bzw. verschiedenen Generationen dann per imshow animation darstellen. Die state machine funktioniert soweit ohne Probleme per Ausgabe in der Console, jedoch benötige ich eine Hilfestellung zu imshow. Ich habe versucht die verschiedenen states per animate() Fkt zi visualisieren, jedoch bekomme ich nur den ersten State ausgegeben. Hat jemand evtl. einen Tipp, was ich versuchen könnte oder wo mein Logikfehler liegt.
Vielen Dank im Vorraus
Code: Alles auswählen
from array import array
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import imshow, show
import matplotlib.animation as animation
cells=np.zeros((10,10),int)
cells[2][2]=1
cells[5][6]=1
def size_x():
size_x=20
return size_x
def size_y():
size_y=20
return size_y
def time_set():
time=10
return time
def get_states(cells):
next_gen=np.zeros((10,10),int)
image=next_gen
for i in range(1,cells.shape[0]-1):
for j in range(1,cells.shape[1]-1):
left = cells[(i-1),j]
right= cells[(i+1),j]
top= cells[i,(j+1)]
bottom= cells[i,(j-1)]
top_left= cells[(i-1),(j-1)]
top_right= cells[(i+1),(j-1)]
bottom_left= cells[(i-1),(j+1)]
bottom_right=cells[(i+1),(j+1)]
curr=cells[i][j]
if left==1 or right==1 or bottom ==1 or top==1 or top_left==1 or top_right==1 or bottom_left==1 or bottom_right==1 or curr==1:
next_gen[i][j]=1
cells=next_gen
return cells
fig, ax = plt.subplots()
image=ax.imshow(get_states(cells))
def animate(i):
get_states(cells)
image.set_data(get_states(cells))
return image
myAnimation= animation.FuncAnimation(fig,animate,interval=25)
plt.show()`#main
fig, ax = plt.subplots()
image=ax.imshow(get_states(cells))
def animate(i):
get_states(cells)
image.set_data(get_states(cells))
return image
myAnimation= animation.FuncAnimation(fig,animate,interval=25)
plt.show()