Динамически изменять содержимое графика Matplotlib - PullRequest
3 голосов
/ 12 января 2010

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

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 12 января 2010

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

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 голосов
/ 11 февраля 2010

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

2 голосов
/ 12 января 2010

Звучит так, как будто вы хотите встроить matplotlib в приложение. Для этого есть несколько ресурсов:

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