我有一个表示有向图的数据结构,我想在HTML页面上动态呈现它。这些图通常只是几个节点,可能只有十个节点,所以我的猜测是性能不会是一个大问题。理想情况下,我希望能够使用jQuery将其挂钩,以便用户可以通过拖动周围的节点来手动调整布局。
注意:我不是在寻找图表库。
答案 0 :(得分:878)
我刚刚把你想要的东西放在一起:http://www.graphdracula.net
这是带有有向图布局,SVG的JavaScript,您甚至可以拖动节点。仍需要一些调整,但完全可用。您可以使用以下JavaScript代码轻松创建节点和边:
var g = new Graph();
g.addEdge("strawberry", "cherry");
g.addEdge("cherry", "apple");
g.addEdge("id34", "cherry");
我使用了前面提到的Raphael JS库(graffle示例)以及我在网上找到的基于强制的图形布局算法的一些代码(所有开源,MIT许可证)。如果您有任何评论或需要某个功能,我可以实现它,只需要询问!
您可能也希望了解其他项目!以下是两个元比较:
SocialCompare有一个广泛的库列表,“节点/边缘图”行将过滤图形可视化库。
DataVisualization.ch已经评估了许多库,包括节点/图形库。遗憾的是,没有直接链接,因此您必须过滤“图表”:
这是类似项目的列表(这里已经提到了一些):
vis.js支持多种类型的网络/边缘图,以及时间轴和2D / 3D图表。自动布局,自动聚类,弹性物理引擎,移动友好,键盘导航,分层布局,动画等MIT licensed,由一家专门研究自组织网络的荷兰公司开发。
< / LI>Cytoscape.js - 遵循jQuery约定的移动支持的交互式图形分析和可视化。通过NIH拨款资助,由@maxkfranz(见his answer below)在几所大学和其他组织的帮助下开发。
The JavaScript InfoVis Toolkit - Jit,一个交互式,多用途的图形绘制和布局框架。例如,参见Hyperbolic Tree。由Twitter dataviz架构师Nicolas Garcia Belmonte和bought by Sencha于2010年建立。
D3.js功能强大的多功能JS可视化库,是Protovis的继承者。请参阅force-directed graph示例以及gallery。
Plotly's JS可视化库将D3.js与JS,Python,R和MATLAB绑定结合使用。请参阅IPython here中的nexworkx示例,人工交互示例here和JS Embed API。
sigma.js用于绘制图表的轻量级但功能强大的库
jsPlumb jQuery插件,用于创建交互式连接图
Springy - 力导向图布局算法
Processing.js John Resig处理库的Javascript端口
JS Graph It - 用直线连接的拖动框。行的最小自动布局。
RaphaelJS's Graffle - 通用多功能矢量绘图库的交互式图形示例。 RaphaelJS无法自动布局节点;你需要另一个图书馆。
JointJS Core - David Durman的MPL许可开源图表库。它可用于创建静态图表或完全交互式图表工具和应用程序构建器。适用于支持SVG的浏览器。布局算法未包含在核心包中
mxGraph以前是商业HTML 5图表库,现在可在Apache v2.0下使用。 mxGraph是draw.io中使用的基础库。
GoJS交互式图形绘制和布局库
yFiles for HTML商业图表绘制和布局库
KeyLines商业JS网络可视化工具包
ZoomCharts商业多用途可视化库
Syncfusion JavaScript Diagram用于绘图和可视化的商业图表库。
Cytoscape Web嵌入式JS网络查看器(未计划新功能;由Cytoscape.js继承)
arbor.js复杂的图形,物理美观,眼花缭乱。被遗弃在2012年5月。存在多个semi-maintained叉子。
jssvggraph“最简单的力导向图布局算法实现为使用SVG对象的Javascript库”。被遗弃在2012年。
jsdot客户端图形绘制应用程序。 Abandoned in 2011
Protovis可视化图形工具包(JavaScript)。由d3取代。
Moo Wheel连接和关系的交互式JS表示(2008)
JSViz 2007年图形可视化脚本
dagre JavaScript的图表布局
Graphviz复杂的图形可视化语言
Flare美观且功能强大的基于Flash的图形绘制
NodeBox Python图表可视化
答案 1 :(得分:44)
免责声明:我是Cytoscape.js的开发者
Cytoscape.js是一个HTML5图形可视化库。 API很复杂,遵循jQuery约定,包括
cy.elements("node[weight >= 50].someClass")
的功能与您预期的相同),cy.nodes().unselect().trigger("mycustomevent")
),如果你正在考虑使用图表构建一个严肃的webapp,你至少应该考虑使用Cytoscape.js。它是免费的,开源的:
答案 2 :(得分:35)
JsVIS非常好,但是图表越来越慢,自2007年以来就被放弃了。
prefuse是一组用于在Java中创建丰富的交互式数据可视化的软件工具。 flare是一个ActionScript库,用于创建自2012年以来放弃的Adobe Flash Player中运行的可视化。
答案 3 :(得分:9)
在商业场景中,一位认真的选手肯定是yFiles for HTML:
它提供:
以下示例渲染显示了大多数请求的功能:
完全披露:我为yWorks工作,但在Stackoverflow上,我不代表我的雇主。
答案 4 :(得分:7)
正如guruz所提到的,JIT有几个可爱的图形/树形布局,包括非常吸引人的RGraph和HyperTree可视化。
另外,我刚刚提出了一个超级简单的基于SVG的implementation at github(没有依赖关系,~12 LOC),这对于现代浏览器中显示的小图表应该足够好。