Как поместить несколько результатов imshow () в одну фигуру? - PullRequest
0 голосов
/ 03 октября 2018

Я бы хотел построить все итерации на одном графике для матрицы syn0, но следующий код показывает только последнюю итерацию, и если я изменю код, он откроет график 60000 раз, как я могу построить график?вся итерация в одном сюжете?

syn0 = 2 * np.random.random((3, 4)) - 1

arr_syn0[0][0].append(syn0[0][0])
arr_syn0[0][1].append(syn0[0][1])
arr_syn0[0][2].append(syn0[0][2])
arr_syn0[0][3].append(syn0[0][3])
arr_syn0[1][0].append(syn0[1][0])
arr_syn0[1][1].append(syn0[1][1])
arr_syn0[1][2].append(syn0[1][2])
arr_syn0[1][3].append(syn0[1][3])
arr_syn0[2][0].append(syn0[2][0])
arr_syn0[2][1].append(syn0[2][1])
arr_syn0[2][2].append(syn0[2][2])
arr_syn0[2][3].append(syn0[2][3])


plt.figure()
x=plt.imshow(syn0,aspect='auto', interpolation="nearest", cmap='YlOrRd_r', origin="upper")
plt.colorbar(x)
plt.title('syn1')
plt.show()

1 Ответ

0 голосов
/ 03 октября 2018

Вы говорите, что хотите построить все итерации на одном графике, но, поскольку вы выполняете итерацию более 60000 изображений, я думаю, вам нужно построить новые данные на одной и той же фигуре, не открывая новую.

Чтобы сделать это, вы должны использовать метод imshow только на первом изображении и метод draw на других изображениях, за которым следует pause метод, который вызовет цикл обработки событий GUI и обновит изображение.

Попытка уменьшить ваш код до минимального, полного и проверяемого примера Я бы сделал что-то вроде этого:

import numpy as np
import matplotlib.pyplot as plt

firstImage = True

for j in range(5): 
    syn0 = 2 * np.random.random((3, 4)) - 1
    if firstImage:    
        img=plt.imshow(syn0,aspect='auto', interpolation="nearest", cmap='YlOrRd_r', origin="upper") 
        firstImage = False
    else:
        img.set_data(syn0)
        plt.pause(0.1)
        plt.draw()
    plt.title('syn1') 

Этот код показывает различные изображения на одном и том же рисунке один за другим.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...