2010-01-12 3 views
3

Я раньше, я сравнивал вывод двух функций с помощью python и matplotlib. Результат был так же прост, так как построение с помощью matplotlib довольно просто: я только построил два массива с разными маркерами. Кусок пирога.Динамически меняет содержимое графика matplotlib

Теперь я нахожусь с той же проблемой, но теперь у меня есть много пары кривых для сравнения. Сначала я попробовал зарисовать все с разными цветами и маркерами. Это меня не удовлетворило, так как диапазоны каждой кривой не совсем одинаковы. В дополнение к этому у меня быстро закончились цвета и маркеры, которые были достаточно разными для идентификации (RGBCMYK, после этого пользовательские цвета напоминают любые предыдущие).

Я также попробовал подзадачу каждой пары кривых, получив окно со многими графиками. Слишком много народа. Я пробовал одно окно за сюжет, слишком много окон.

Так что я был просто интересен, если есть какой-либо существующий виджет или если у вас есть какие-либо предложения (или другую идея) для достижения этой цели:

Я хочу увидеть пару кривых, а затем легко выбрать следующую , с помощью ползунка, кнопки, прокрутки мыши или любого другого виджета или события. Изменяя кривые, предыдущий должен исчезнуть, легенда должна измениться и ее ось.

+0

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

ответ

8

Ну, мне удалось сделать это с обработчиком событий для щелчков мыши. Я изменю его на что-то более полезное, но я все равно отправлю свое решение.

import matplotlib.pyplot as plt 

figure = plt.figure() 
# plotting 
plt.plot([1,2,3],[10,20,30],'bo-') 
plt.grid() 
plt.legend() 

def on_press(event): 
    print 'you pressed', event.button, event.xdata, event.ydata 
    event.canvas.figure.clear() 
    # select new curves to plot, in this example [1,2,3] [0,0,0] 
    event.canvas.figure.gca().plot([1,2,3],[0,0,0], 'ro-') 
    event.canvas.figure.gca().grid() 
    event.canvas.figure.gca().legend() 
    event.canvas.draw() 


figure.canvas.mpl_connect('button_press_event', on_press) 
2

мне очень нравится, используя черты. Если вы следуете руководству Writing a graphical application for scientific programming, вы сможете делать то, что хотите. В учебнике показано, как взаимодействовать с графиком matplotlib, используя графический интерфейс пользователя.

Смежные вопросы