我有一个表示有向图的数据 struct ,我想在HTML页面上动态呈现它.这些图通常只有几个 node ,在最上端可能有十个,所以我猜性能不会有什么大问题.理想情况下,我希望能够将其与jQuery挂钩,以便用户可以通过拖动 node 来手动调整布局.

注意:我不是在找制图库.

推荐答案

我刚刚把你要找的东西拼凑起来:http://www.graphdracula.net

它是带有定向图布局的JavaScript、SVG,甚至可以拖动 node .仍然需要一些调整,但完全可用.您可以使用如下JavaScript代码轻松创建 node 和边:

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

我使用了前面提到的Raphael JS库(涂鸦示例),外加一些我在网上找到的基于力的图形布局算法的代码(一切都是开源的,麻省理工学院许可).如果您有任何意见或需要某个功能,我可能会执行它,尽管问!


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

  • SocialCompare有一个广泛的库列表," node /边图"行将过滤图形可视化库.

  • ch已经判断了许多库,包括 node /图形库.不幸的是,没有直接链接,所以你必须go 过滤查看"图表":Selection DataVisualization.ch

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

纯JavaScript库

  • vis.js支持多种类型的网络/边图,外加时间线和2D/3D图表.自动布局、自动群集、弹性物理引擎、移动友好、键盘导航、分层布局、动画等MIT licensed,由一家专门从事自组织网络研究的荷兰公司开发.

  • Cytoscape.js-交互式图形分析和可视化,支持移动设备,遵循jQuery惯例.由美国国立卫生研究院资助,@maxkfranz(见his answer below)在几所大学和其他组织的帮助下开发.

  • The JavaScript InfoVis Toolkit-Jit,一种交互式、多用途的图形绘制和布局框架.例如,见Hyperbolic Tree.由Twitter dataviz architect Nicolas Garcia Belmontebought by Sencha于2010年建造.

  • D3.js功能强大的多功能JS可视化库,Protovis的后继者.请参阅force-directed graph示例和gallery中的其他图形示例.

  • Plotly's JS visualization library uses D3.js with JS, Python, R, and MATLAB bindings. See a nexworkx example in IPython here, human interaction example here, and JS Embed API.

  • sigma.js个轻量级但功能强大的绘图库

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

  • Springy-一种力有向图布局算法

  • Processing.js处理库的Javascript端口,John Resig

  • JS Graph It-通过直线连接的拖放框.线的最小自动布局.

  • RaphaelJS's Graffle-通用多用途矢量绘图库的交互式图形示例.RaphaelJS无法自动布局 node ;你还需要另一个图书馆.

  • JointJS Core-David Durman的MPL许可的开源图表库.它可以用来创建静态图表或完全交互的图表工具和应用程序生成器.在支持SVG的浏览器中工作.核心软件包中不包括的布局算法

  • mxGraph个以前商业化的HTML5图表库,现在在ApacheV2下可用.0.mxGraph是draw.io中使用的基本库.

商业图书馆

废弃的图书馆

  • Cytoscape Web个可嵌入的JS网络浏览器(未计划新功能;Cytoscape.JS成功)

  • CanvizJS renderer,适用于Graphviz图形.Abandoned,2013年9月.

  • arbor.js个复杂的图形,具有良好的物理性能和视觉效果.2012年5月被遗弃.有几个semi-maintainedfork .

  • jssvggraph"作为使用SVG对象的Javascript库实现的最简单的力导向图形布局算法".2012年被遗弃.

  • jsdot客户端图形绘制应用程序.Abandoned in 2011.

  • Protovis可视化图形工具包(JavaScript).替换为d3.

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

  • JSViz 2007时代的图形可视化脚本

  • dagre用于JavaScript的图形布局

非Javascript库

Javascript相关问答推荐

如何在alpinejs中显示dev中x-for的元素

Angular material 表多个标题行映射

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

如何在JavaScript中通过一次单击即可举办多个活动

如何编辑代码FlipDown.js倒计时?

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

使用print This时, map 容器已在LeafletJS中初始化

将json数组项转换为js中的扁平

Next.js(react)使用moment或不使用日期和时间格式

google docs boldText直到按行执行应用脚本错误

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

Phaserjs-创建带有层纹理的精灵层以自定义外观

传递方法VS泛型对象VS事件特定对象

如何在和IF语句中使用||和&;&;?

在Java脚本中录制视频后看不到曲目

自动滚动功能在当前图像左侧显示上一张图像的一部分

MongoDB通过数字或字符串过滤列表

在没有任何悬停或其他触发的情况下连续交换图像

在范围数组中查找公共(包含)范围