Хотите сделать статический график SVG (из matplotlib) интерактивным через браузер

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

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

  • Используйте графическую библиотеку JavaScript (например, Raphael) и рисуйте все с нуля. Это похоже на ненужную, утомительную работу.
  • Используйте библиотеку построений для создания SVG, а затем используйте JavaScript для поддержки взаимодействия.. Это кажется более управляемым, хотя у меня есть следующая проблема: как добавить метаданные в SVG из библиотеки графиков (Matplotlib)? Эти метаданные не будут отображаться при отображении SVG, но они будут доступны из JavaScript.

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

Ответ 1

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

В принципе:

  • В matplotlib используйте element.set_gid ( "youridhere" ) в элементе matplotlib, который вы хотите сделать интерактивным. То есть, используйте set_gid() на выходе из plot()/hist()/whatever().
  • Создайте svg с matplotlib, но в качестве файла используйте объект StringIO.
  • Разберите svg с библиотекой xml (например, xml.etree.ElementTree)
  • Найдите элементы xml с указанным вами идентификатором (например, "youridhere" ).
  • Добавить атрибуты onclick/on ${theeventyoucareabout} с именем функции javascript.
  • Добавьте элемент script с вашим javascript как CDATA в дерево xml.
  • Экспорт xml в файл svg!

Ответ 3

Поиск дает следующее: http://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/

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

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

Ответ 4

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

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