想通过浏览器制作静态SVG图(来自matplotlib)

Dav*_*vid 11 javascript python svg matplotlib

我的目标是创建一个可以在浏览器中与之交互的图.理想情况下,我想要一个记录良好且成熟的JavaScript绘图库,它支持SVG.据我所知,这不存在,但如果我错了请纠正我.

我已经确定了几个替代方案.

  1. 使用JavaScript图形库(例如Raphael)并从头开始绘制所有内容.这似乎是很多不必要的,乏味的工作.
  2. 使用绘图库生成SVG,然后使用JavaScript支持交互.这似乎更易于管理,但我确实遇到以下问题:如何从绘图库(matplotlib)向SVG添加元数据?显示SVG时不会显示此元数据,但可以从JavaScript访问它.

任何建议都非常感谢.

Tim*_*ast 11

matplotlib画廊中可以看到一种方法.

基本上:

  1. 在matplotlib中,在要进行交互的matplotlib元素上使用element.set_gid("youridhere").也就是说,在plot()/ hist()/ whatever()的输出上使用set_gid().
  2. 使用matplotlib创建svg,但使用StringIO对象作为文件.
  3. 使用xml库解析svg(例如xml.etree.ElementTree)
  4. 找到具有您设置的id的xml元素(例如"youridhere").
  5. 使用javascript函数名称添加onclick/on $ {theeventyoucareabout}属性.
  6. 使用javascript作为CDATA添加脚本元素到xml树.
  7. 将xml导出到svg文件!

  • 是.我并没有建议在飞行中这样做.问题是生成一个交互式SVG.这将生成一个SVG,可以作为静态文件托管,没有任何问题. (3认同)

Sid*_*Sid 0

搜索结果如下:http ://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/

我使用了以下图表库:

  1. jqPlot - 非常好,但还不支持 svg
  2. HTML5 Canvas - 是的,我必须从头开始做很多事情(甚至工具提示),但获得了一些很大的灵活性