我有一个表示有向图的数据结构,我想在HTML页面上动态地呈现它。这些图通常只有几个节点,在最顶端可能有十个,所以我的猜测是性能不会有什么大问题。理想情况下,我希望能够将它与jQuery挂钩,以便用户可以通过拖动节点来手动调整布局。
注意:我不是在寻找一个图表库。
JsVIS非常好,但是对于更大的图形来说比较慢,并且在2007年被放弃了。
prefuse是一组用于在Java中创建丰富的交互式数据可视化的软件工具。耀斑是一个ActionScript库,用于创建运行在Adobe Flash Player中的可视化,自2012年以来被放弃。
我只是把你可能正在寻找的东西放在一起:http://www.graphdracula.net
它是带有有向图形布局的JavaScript, SVG,你甚至可以拖动节点。仍然需要一些调整,但完全可用。你可以像这样用JavaScript代码轻松创建节点和边:
var g = new Graph(); g.addEdge("strawberry", "cherry"); g.addEdge("cherry", "apple"); g.addEdge("id34", "cherry");
我使用了之前提到的Raphael JS库(涂鸦示例)加上一些我在网上找到的基于力的图形布局算法的代码(一切都是开源的,MIT许可)。如果你有任何评论或需要某个功能,我可能会实现它,只是问!
你可能也想看看其他项目!下面是两个元比较:
SocialCompare有一个广泛的库列表,并且“;节点/边缘图”;Line将过滤图形可视化。
下面是一些类似的项目(有些已经在这里提到过了):
vis.js支持许多类型的网络/边缘图,加上时间轴和2D/3D图表。自动布局,自动集群,弹性物理引擎,移动友好,键盘导航,分层布局,动画等麻省理工学院的许可和由荷兰公司专门研究自组织网络开发。
Cytoscape.js -交互式图形分析和可视化与移动支持,遵循jQuery惯例。由美国国立卫生研究院资助,由@maxkfranz(见他的回答如下)在几所大学和其他组织的帮助下开发。
JavaScript InfoVis工具包 - Jit,一个交互式,多用途的图形绘制和布局框架。例如,参见双曲线树。由Twitter数据可视化架构师尼古拉斯·加西亚·贝尔蒙特和Sencha购买在2010年构建。
情节的 JS可视化库使用D3.js与JS, Python, R和MATLAB绑定。请参阅IPython 在这里中的nexworkx示例,人机交互示例在这里和JS嵌入API。
jsPlumb jQuery插件创建交互式连接图形
有弹力的 -一个力向图布局算法
JS图形 -拖放由直线连接的盒子。最小的自动布局的行。
JointJS核心 - David Durman的mpls许可的开源图表库。它既可以用来创建静态图,也可以用来创建完全交互式的图工具和应用程序构建器。适用于支持SVG的浏览器。布局算法不包括在核心包
yFiles for HTML商业绘图和布局库
Syncfusion JavaScript图用于绘制和可视化的商业图表库。
Cytoscape网络嵌入式JS网络查看器(没有新功能计划;由Cytoscape.js继承)
Canviz JS 渲染器用于Graphviz图形。被遗弃的 2013年9月。
jssvggraph "最简单的可能的力有向图形布局算法实现为一个Javascript库,使用SVG对象"2012年被遗弃。
Protovis可视化图形工具包(JavaScript)。用d3代替。
Moo轮交互式JS表示连接和关系(2008)
JSViz 2007年代图形可视化脚本
Processing.js Processing库的Javascript端口
正如guruz提到的,JIT有几个可爱的图/树布局,包括相当吸引人的RGraph和HyperTree可视化。
此外,我刚刚提出了一个超级简单的基于svg的在github实现(没有依赖关系,~125 LOC),它应该足够好地用于现代浏览器中显示的小图形。
免责声明:我是Cytoscape.js的开发人员
js是一个HTML5图形可视化库。该API非常复杂,并且遵循jQuery惯例,包括
cy.elements("node[weight >= 50].someClass")
cy.nodes().unselect().trigger("mycustomevent")
如果您正在考虑用图形构建一个严肃的web应用程序,那么您至少应该考虑一下Cytoscape.js。它是免费的,开源的:
http://js.cytoscape.org < a href = " http://js.cytoscape.org " > < / >
在商业场景中,一个严肃的竞争者肯定是yFiles for HTML:
它提供了:
下面是一个示例渲染,显示了大部分请求的功能:
充分披露:我为yWorks工作,但在Stackoverflow上我不代表我的雇主。