Web应用程序中的交互式Graphviz图

Aks*_*y K 24 django web-applications graph graphviz pydot

我正在尝试使用Python在我的Django Web应用程序中进行一些交互式图形可视化.我找到了Graphviz并且能够使用Pydot(Graphviz的点语言的Python接口)在我的应用程序上输出静态图形(作为.png图像).

但是,我希望使我的图形更具交互性,例如能够在将鼠标移到其上时突出显示节点,使节点可点击,将节点拖动到其他位置并放大图形.

有没有办法在Graphviz中做到这一点?或者一般来说,有没有办法为我的Django应用程序制作交互式图形而无需使用Flash?我不想使用闪存,因为我不熟悉它,因为我想要可视化一个相当大的数据集.

Tam*_*más 18

试试Javascript Infovis Toolkit.它全部在浏览器画布中实现,因此不需要Flash,只有支持<canvas>标签的体面浏览器.图形可视化示例在这里,这里这里,其他演示在这里.


Nar*_*lou 12

Canviz(来源).但是,节点还没有可点击(它们是使用图像映射的旧版本.代码库已经更改,现在使用javascript在客户端进行渲染,这就是为什么还没有启用可点击链接的原因.

这是我发现的最好的,但是他们还有很多其他的.

mxGraph(不是免费的)


Pio*_*dal 8

您可以使用D3.js进行图形可视化(请参阅此处了解D3js中图形可视化的示例,并查看如何进行交互式网络可视化).

对于后端(如果有必要的东西不仅仅是一个json文件来表示图形 - 即它是否很大),那么你可以使用Python模块来绘制图形,NetworkX.

旁注,这是我简单的交互式图形可视化示例:

在此输入图像描述


joh*_*org 5

您只需使用 DOT 和 HTML 就可以非常简单地完成类似的事情。

生成客户端地图并将其覆盖在您的 PNG 图像上。(将地图代码插入 HTML 页面。)

dot test.dot -Tpng -o test.png -Tcmapx -o test.map
Run Code Online (Sandbox Code Playgroud)

SVG 导出可直接单击。