JavaScript中的graphics可视化库

我有一个数据结构,表示一个有向图,我想在HTML页面上dynamic呈现。 这些图通常只是几个节点,也许十个在高端,所以我的猜测是性能不会是一个大问题。 理想情况下,我希望能够使用jQuery将其绑定,以便用户可以通过拖动节点来手动调整布局。

注意:我不是在寻找一个图表库。

我只是把你可能要找的东西放在一起: http : //www.graphdracula.net

它是带有有向graphics布局的JavaScript,SVG,甚至可以拖动节点。 还需要一些调整,但是完全可用。 您可以使用JavaScript代码轻松创build节点和边界,如下所示:

var g = new Graph(); g.addEdge("strawberry", "cherry"); g.addEdge("cherry", "apple"); g.addEdge("id34", "cherry"); 

我使用了前面提到的Raphael JS库(graffle示例),以及一些我在网上find的基于强制的graphics布局algorithm(一切开源,MIT许可证)的代码。 如果您有任何评论或需要特定的function,我可以实施它,只是问!


你也可以看看其他项目! 以下是两个比较:

  • SocialCompare有一个广泛的库列表,“节点/边缘图”行将过滤graphics可视化。

  • DataVisualization.ch已经评估了许多库,包括节点/graphics库。 不幸的是没有直接的链接,所以你必须过滤“图”: 选择DataVisualization.ch

这是一个类似项目的列表(一些已经在这里提到):

纯粹的JavaScript库

  • vis.js支持多种types的networking/边缘graphics,以及时间线和2D / 3D图表。 自动布局,自动聚类,弹性物理引擎,移动友好,键盘导航,层次布局,animation等。 麻省理工学院由荷兰一家专门从事自组织networking研究的公司开发。

  • Cytoscape.js – 使用移动支持的交互式graphics分析和可视化,遵循jQuery约定。 通过美国国立卫生研究院拨款资助,由@maxkfranz开发(见下面的答案 ),在几所大学和其他组织的帮助下。

  • JavaScript InfoVis Toolkit – Jit,一个交互式,多用途的graphics和布局框架。 参见例如双曲树 。 由Twitter的dataviz架构师尼古拉斯·加西亚·贝尔蒙特 ( Nicolas Garcia Belmonte)build造,2010年被Sencha收购 。

  • D3.js强大的多functionJS可视化库,Protovis的继任者。 请参阅图库中的强制graphics示例和其他graphics示例。

  • Plotly的 JS可视化库使用JS,Python,R和MATLAB绑定的D3.js。 在这里查看IPython中的nexworkx示例, 这里是人机交互示例,以及JS Embed API 。

  • sigma.js用于绘制graphics的轻量级但强大的库

  • 用于创build交互式连接图的jsPlumb jQuery插件

  • Springy – 一种强制导向的graphics布局algorithm

  • Processing.js处理库的Javascript端口由John Resig提供

  • JSgraphics – 拖放通过直线连接的盒子。 线条的最小自动布局。

  • RaphaelJS的Graffle – 一个通用的多用途vector绘图库的交互式图例子。 RaphaelJS不能自动布局节点; 你需要另一个库。

  • JointJS Core – David Durman的MPL授权的开源图表库。 它可以用来创build静态图或完全交互式的图表工具和应用程序构build器。 适用于支持SVG的浏览器。 未包含在核心软件包中的布局algorithm

  • mxGraph以前是商业化的HTML 5图表库,现在可以在Apache v2.0下获得。 mxGraph是draw.io中使用的基础库。

商业图书馆

  • GoJS交互式graphics绘制和布局库

  • y文件为HTML商业graphics绘制和布局库

  • KeyLines Commercial JSnetworking可视化工具包

  • ZoomCharts商业多用途可视化库

被遗弃的图书馆

  • Cytoscape Webembedded式JSnetworking查看器(没有计划新function;由Cytoscape.js成功)

  • 用于Graphvizgraphics的Canviz JS 渲染器 。 在2013年9月被遗弃 。

  • arbor.js复杂的graphics与良好的物理和眼睛糖果。 在2012年5月被遗弃。存在几个半维护的叉子。

  • jssvggraph “作为使用SVG对象的Javascript库实现的最简单的可能的强制有向图布局algorithm”。 在2012年被遗弃。

  • jsdot客户端graphics绘制应用程序。 在2011年被遗弃 。

  • Protovis可视化graphics工具包(JavaScript)。 由d3取代。

  • Moo Wheel互动JS代表连接和关系(2008)

  • JSViz 2007年代的graphics可视化脚本

  • dagre JavaScript的graphics布局

非Javascript库

  • Graphviz先进的graphics可视化语言

    • Graphviz已经使用Emscripten 在这里与在线交互式演示在这里编译成Javascript
  • Flare美丽而强大的基于Flash的graphics绘制

  • NodeBox Python Graph可视化

JsVIS相当不错,但图表较大,而且自2007年以来一直被放弃。

prefuse是一套用于在Java中创build丰富的交互式数据可视化的软件工具。 flare是一个用于创build可在Adobe Flash Player中运行的可视化对象的ActionScript库,自2012年以来已放弃。

免责声明:我是Cytoscape.js的开发者

Cytoscape.js是一个HTML5graphics可视化库。 该API是复杂的,遵循jQuery约定,包括

  • 查询和过滤的select器( cy.elements("node[weight >= 50].someClass")和你所期望的一样),
  • 链接(例如cy.nodes().unselect().trigger("mycustomevent") ),
  • 类似jQuery的函数绑定事件,
  • 元素作为集合(如jQuery有HTMLDomElements的集合),
  • 可扩展性(可以添加自定义布局,用户界面,核心和收集function等),
  • 和更多。

如果你正在考虑用graphics构build一个严肃的web应用程序,至less应该考虑Cytoscape.js。 它是免费的,开源的:

http://js.cytoscape.org

正如古鲁兹所说, JIT有几个可爱的graphics/树形布局,其中包括颇具吸引力的RGraph和HyperTree可视化。

另外,我刚刚在github上提出了一个超级简单的基于SVG的实现 (没有依赖关系,〜125 LOC),对于在现代浏览器中显示的小图表来说,这应该足够好用。

在商业场景中,肯定的是YFiles for HTML :

它提供:

  • 轻松导入自定义数据( 这种交互式在线演示似乎几乎正是OP所期待的)
  • 交互式编辑,通过用户手势创build和操作图表(请参阅完整的编辑器 )
  • 一个巨大的编程API,用于定制库的每个方面
  • 支持分组嵌套 (交互式以及通过布局algorithm)
  • 不依赖于特定的UI工具包,但支持集成到几乎任何现有的Javascript工具包(请参阅“集成”演示 )
  • 自动布局(各种风格,如“层次”,“有机”,“正交”,“树”,“圆形”,“径向”,等等)
  • 自动复杂的边缘路由(正交和有机边缘路由,避免障碍物)
  • 增量和部分布局(添加和删除元素,只是稍微或根本不改变图的其余部分)
  • 支持分组和嵌套(交互式以及通过布局algorithm)
  • 图分析algorithm的实现 (path,集中性,networkingstream等)
  • 使用HTML 5技术(如SVG + CSS和Canvas)和现代Javascript利用属性和其他更多的ES5和ES6function(但出于同样的原因将不能在IE版本8和更低版本中运行)。
  • 使用模块化API,可以使用UMD装载机按需加载

这是一个示例渲染,显示了大部分请求的function:

由BPMN演示创建的示例呈现的屏幕截图。

充分披露:我为yWorks工作,但在Stackoverflow我不代表我的雇主。