我的目标是制作一个可以在浏览器中与之交互的情节。理想情况下,我想要一个记录良好且成熟的JavaScript绘图库,它支持SVG。据我所知,这不存在,但如果我错了请纠正我。
我已经确定了几个替代方案。
- 使用JavaScript图形库(例如Raphael)并从头开始绘制所有内容。 这似乎是很多不必要的,乏味的工作。
- 使用绘图库生成SVG,然后使用JavaScript来支持交互。 这似乎更易于管理,但我确实遇到以下问题:如何从绘图库(matplotlib)向SVG添加元数据?显示SVG时不会显示此元数据,但可以从JavaScript访问它。
任何建议都非常感谢。
一种方法可以在这里看到 matplotlib画廊。
基本上:
- 在matplotlib中,在要进行交互的matplotlib元素上使用element.set_gid(“youridhere”)。也就是说,在plot()/ hist()/ whatever()的输出上使用set_gid()。
- 使用matplotlib创建一个svg,但使用StringIO对象作为您的文件。
- 使用xml库解析svg(例如xml.etree.ElementTree)
- 找到具有您设置的ID的xml元素(例如“youridhere”)。
- 使用javascript函数名称在$ {theeventyoucareabout}属性上添加onclick / on。
- 使用javascript作为CDATA添加脚本元素到xml树。
- 将xml导出到svg文件!
搜索结果如下: http://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/
我使用了以下库来表示图形:
- jqPlot - 非常好,但还不支持svg
- HTML5 Canvas - 是的,我必须从头开始做很多事情(甚至是工具提示),但还是有很大的灵活性
如果您的目标是从一些绘图工具生成的静态svg获取输出,并将其转换为交互式的东西,那么您可能必须自己想出一些东西,因为每个这样的工具输出很可能是不同的。
但是,有很多交互式SVG图形库,例如: