Работа в Python 3.7 на ноутбуке Jupyter.У меня есть следующие 3 встроенные функции.Первый, set_board (), создает массив случайных чисел (в данном случае 0 или 1).Второй, VisMap (), просто возвращает созданную вами доску в виде изображения, используя plt.imshow.Третий, startRumor (), в основном меняет одно из значений в середине массива.Все очень простые вещи, прекрасно работающие.
def set_board(height=5,width=10,density=.75):
city = np.zeros((height,width),dtype='int64')
for i in range(height):
for j in range(width):
if rand.random() <= density:
city[i,j] = 1
return city
def VisMap(Map=set_board(),Colors=plt.cm.RdYlGn):
MapVis = plt.imshow(Map, Colors)
return MapVis
def startRumor(board):
height, width = board.shape
height_quarters = int(height/4)
width_quarters = int(width/4)
starting_middle_height_index = height_quarters
ending_middle_height_index = 3*height_quarters
starting_middle_width_index = width_quarters
ending_middle_width_index = 3*width_quarters
found_starting_point = False
if np.all(board[starting_middle_height_index:ending_middle_height_index, starting_middle_width_index:ending_middle_width_index] == 0):
i = rand.randint(starting_middle_height_index, ending_middle_height_index)
j = rand.randint(starting_middle_width_index, ending_middle_width_index)
board[i,j] = 2
found_starting_point = True
while not found_starting_point:
i = rand.randint(starting_middle_height_index, ending_middle_height_index)
j = rand.randint(starting_middle_width_index, ending_middle_width_index)
if board[i,j] == 1:
found_starting_point = True
board[i, j] = 2
Моя проблема: мне нужно инициализировать плату, визуализировать эту плату, а затем использовать функцию startRumor (), чтобы изменить одно из значений в массиве (таким образом,придание изображению доски зеленой точки в середине), а также визуализировать эту новую доску.Поэтому следующая ячейка должна возвращать одно изображение без зеленой точки и второе изображение с зеленой точкой.Я пытался использовать подсюжеты и axxarr - ни один не работал для меня.Я получаю ошибки, говоря: «данные изображения не могут быть преобразованы в плавающее».То, как написано сейчас, возвращает только окончательную версию платы с зеленой точкой на ней.
TestBoard2 = set_board(10,10,.1)
VisMap(TestBoard2) #this one is not showing
startRumor(TestBoard2)
VisMap(TestBoard2)