Интерактивное построение графиков matplotlib (рисование линий на графике вручную)

Я успешно построил набор данных, упорядоченных по дате (ось X - это дата) используя matplotlib. Однако я хочу иметь возможность вручную рисовать линии от одного (date1, y1) к другому (date2, y2) на построенном графике.

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

Подводя итог, я хочу сделать следующее:

  1. Нарисуйте набор линий на построенном графике
  2. Сохраните данные нарисованных вручную линий в файл
  3. Загрузите данные нарисованных вручную линий из файла (в воссоздать график)
  4. В идеале я хотел бы хранить «метаданные» о нарисованных линиях (например, цвет, ширина линии и т. д.)

Может ли кто-нибудь опубликовать фрагмент скелета (желательно со ссылками на дополнительную информацию), чтобы покажите, как я могу начать реализацию этого (основные требования - это возможность вручную рисовать линии на графике, а затем сохранять / загружать линии в график).

Примечание: Под «вручную» я имею в виду возможность рисовать линии, щелкая точку, а затем щелкая другую точку на построенном графике. чтобы провести линию между двумя точками (или просто щелкнув точку и перетащив и отпустив мышь в другой точке построенного графика)

[[Обновление]]

Дэв, большое спасибо за предоставленный фрагмент.Это позволяет мне делать то, что я пытаюсь сделать - однако, как только линия рисуется на холсте (после второго щелчка мыши), происходит сбой графического интерфейса, и я получаю это предупреждающее сообщение на консоли:

/usr/local/lib/python2.6/dist-packages/matplotlib/backend_bases.py:2192: DeprecationWarning: Using default event loop until function specific to this GUI is implemented
  warnings.warn(str,DeprecationWarning)

Do you знаете, что вызывает это предупреждение и внезапное завершение программы?

Кроме того, можно ли нарисовать более одной линии на графике? (Я предполагаю, что это потребует написания какого-то обработчика событий, который будет создавать экземпляр переменной linedrawer). На данный момент у меня есть возможность нарисовать только одну линию до того, как «приложение» внезапно завершится.

11
задан Homunculus Reticulli 10 February 2012 в 10:48
поделиться