Закрыть фигуру matplotlib с помощью клавиатуры - PullRequest
0 голосов
/ 11 февраля 2019

Я строю 2 графика на одном и том же рисунке внутри цикла for.Проблема в том, что для поддержания цикла необходимо вручную закрыть фигуру с помощью мыши.Это сложно, поскольку длина цикла составляет более 300 шагов.Я ищу более простое решение, например, нажав цифру 1, чтобы закрыть текущую фигуру и просмотреть следующую.Я попытался с помощью следующего кода, и он не работает.Я считаю, что последующая строка читается только после закрытия существующего графика.Как это исправить?

PS: Кроме того, использование raw_input() для нажатия клавиш не является хорошим способом, так как я должен дополнительно нажать «Enter».Поэтому предложите альтернативный метод, при котором я могу закрыть графики, непрерывно нажимая «1».

for roww in range (0,height) :
        com = 0
        isignal = matrix[roww]
        fft_ith = np.fft.fft(isignal)
        fft_abs_ith = np.abs(fft_ith)
        c_fft = fft_abs_ith[:len(fft_abs_ith)//2] 
        c_fft[zi] = 0


        plt.subplot(2,1,1)
        plt.plot(time,isignal,marker='.')
        plt.xlim(0,time[len(time)-1])
        plt.title("Individual oscilations  and FFT of each cell \n cell ="+str(roww))
        plt.subplot(2,1,2)
        plt.plot(c_freqq,c_fft,marker = ".")
        plt.show()
comnd = raw_input()
if comnd == 1
        plt.close()


Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

По умолчанию цифры matplotlib могут быть закрыты с помощью клавиши q .Если вместо этого вы хотите использовать клавишу 1 , вы можете добавить

plt.rcParams["keymap.quit"] = "1"

где-нибудь поверх вашего скрипта.

0 голосов
/ 12 февраля 2019

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

gif

Код по адресу: https://github.com/gustavovelascoh/plot_update

0 голосов
/ 11 февраля 2019

Функция raw_input() возвращает строку, поэтому вам нужно привести comnd к целому числу или заменить "1" в вашем операторе if на '1'.

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