Хотите сделать статический график 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!
Ответ 2
Существует бэкэнд HTML5:
http://code.google.com/p/mplh5canvas/
Ответ 3
Поиск дает следующее: http://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/
Я использовал следующие библиотеки для графиков:
- jqPlot - очень хорошо, но не поддерживает svg еще
- HTML5 Canvas - Да, мне пришлось много делать с нуля (даже всплывающие подсказки), но получили отличную гибкость, чтобы играть с
Ответ 4
Если ваша цель - вывести результат из статического svg, сгенерированного каким-то инструментом построения графика, и превратить его в нечто интерактивное, тогда вам, вероятно, придется что-то придумать, так как результат, скорее всего, будет отличаться для каждого такого инструмента.
Однако имеется множество интерактивных библиотек графиков SVG, некоторые примеры: