Хотите сделать статичный сюжет SVG (из matplotlib) интерактивным через браузер - PullRequest
11 голосов
/ 25 января 2012

Моя цель - создать сюжет, с которым вы можете взаимодействовать в браузере.В идеале мне нужна хорошо документированная и зрелая библиотека для построения графиков JavaScript, которая поддерживает SVG.Насколько я могу судить, этого не существует, хотя, пожалуйста, исправьте меня, если я ошибаюсь.

Я определил пару альтернатив.

  1. Использованиеграфическую библиотеку JavaScript (например, Рафаэля) и рисовать все с нуля. Это кажется большой ненужной, утомительной работой.
  2. Используйте библиотеку печати для создания SVG, затем используйте JavaScript для поддержкивзаимодействие. Это кажется более управляемым, хотя у меня есть следующая проблема: Как я могу добавить метаданные в SVG из библиотеки черчения (matplotlib)?Эти метаданные не будут отображаться при отображении SVG, но будут доступны из JavaScript.

Любой совет очень ценится.

Ответы [ 4 ]

11 голосов
/ 11 мая 2012

Один путь к этому можно увидеть в галерее matplotlib .

В основном:

  1. В matplotlib используйте element.set_gid ("youridhere")на элементе matplotlib, который вы хотите сделать интерактивным.То есть используйте set_gid () в выводе plot () / hist () / what ().
  2. Создайте SVG с помощью matplotlib, но используйте объект StringIO в качестве файла.
  3. Разобрать svg с библиотекой xml (например, xml.etree.ElementTree)
  4. Найти элементы xml с идентификатором, который вы установили (например, «вы здесь»).
  5. Добавить onclick / on $ {theeventyoucareabout} атрибутов с именем функции javascript.
  6. Добавьте элемент сценария с вашим javascript в качестве CDATA к дереву xml.
  7. Экспорт xml в файл svg!
1 голос
/ 11 мая 2012

Существует серверная часть HTML5: http://code.google.com/p/mplh5canvas/

0 голосов
/ 25 января 2012

Если ваша цель состоит в том, чтобы взять вывод из статического SVG, сгенерированного каким-либо инструментом построения графиков, и превратить его во что-то интерактивное, то вам, вероятно, придется придумывать что-то самостоятельно, так как выход, скорее всего, будет разным для каждого такого инструмента.

Однако существует множество интерактивных библиотек SVG-графов, например:

0 голосов
/ 25 января 2012

Поиск выдает это: http://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/

Я использовал следующие библиотеки для графиков:

  1. jqPlot - очень хорошо, но пока не поддерживает svg
  2. HTML5 Canvas - Да, мне пришлось многое сделать с нуля (даже всплывающие подсказки), но я получил большую гибкость, чтобы играть с
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...