Использование событий с matplotlib в цикле for
Я приношу свои извинения, так как я уже открыл еще один билет по связанной теме. Благодаря ответам, которые я получил сейчас, я могу быть более конкретным. Я также получил некоторые решения на основе Tkinter, но я хотел бы решить свои проблемы с событиями и циклами.
Частный случай, с которым я имею дело, заключается в следующем: у меня есть массив массивов. Я хочу, чтобы matplotlib отобразил первый его элемент, позволил мне нажать одну клавишу (со связанным событием), а программа построила второй массив, то же самое поведение и так далее.
В качестве быстрого примера:
import matplotlib.pyplot as plt
import numpy as np
# Define the event
def ontype(event):
if event.key == '1':
print 'It is working'
plt.clf()
# Create figure an connect the event to it
fig=plt.figure(figsize=(16,8))
plt.gcf().canvas.mpl_connect('key_press_event',ontype)
# Loop
for element in xrange(10):
#This mimicks the "array of arrays" generating a random array in each loop
vector = np.random.random(10)
plt.plot(vector)
plt.show()
Я ожидал получить первый график (при первом запуске цикла) и чтобы он оставался открытым до тех пор, пока я не нажму 1. Однако я получаю фигуру с нанесенными десятью векторами, и когда я нажимаю 1, фигура очищается и там написаноЭто работает" через терминал. Мне нужна программа для построения первого и перехода к следующему элементу после нажатия клавиши. Любой намек на это? Что я делаю неправильно?
Спасибо вам, ребята!
РЕДАКТИРОВАТЬ:
Пожалуйста, имейте в виду, что в принципе, структура программы не может быть изменена, и цикл for необходим для вычисления разных вещей, прежде чем строить что-либо. Следовательно, программа должна идти
def ontype(event):
define event
Some stuff
elements = array of arrays
for element in elements:
do more stuff
plot element and "stay" in this plot untill any event key is pressed. And then, go to the next element in elements and do the same
РЕДАКТИРОВАТЬ 2:
Я думаю, что я неЯ правильно объяснил, а данные могли быть неправильно поняты. В моем случае я читаю огромную таблицу данных, и каждая строка - это отдельный источник. То, что я пытаюсь построить, это информация из столбцов. Я физик, поэтому я нене имею большого знания о стильном программировании или о чем-либо. Проблема в том, что ... если нет способа сделать это с помощью цикла for, кто-нибудь может объяснить мне, как выполнять такую работу без него?