x6树状布局学习碎片
x6还是个很好的引擎的,只可惜官网的某些配置不够详尽。在使用树状布局时,官网的示例和api里都只用简单的代码指明用法,但是事实上,他们的代码可以做到的事情远不止示例,而且单纯的示例代码有很多误导性,不足以满足我的使用场景,需要看源码才能了解详细的配置。以下是我看源码得到的一些对于树状布局用法的学习碎片,也不是很完整,更多的配置还得看源码才行。
2021-03-25 17:18 更新:x6布局使用的是antv可视化的布局依赖,其文档应见此
G6紧凑树文档
x6 树状布局学习碎片
这是 x6 官网的树状布局示例,但是并没有过多的解释。官网示例
1 | fetch('../data/algorithm-category.json') |
Hierarchy.mindmap(data, options)
- 接收两个参数,第一个参数是树,第二个参数是定义树结构信息的配置项
- data:一个合法的树,一般的结构如上述的 HierarchyResult,但是 id 和 children 可以不同,只需要在 options 里进行定义相应的 get 方法即可
- options:一些提取树结构信息的配置
- direction:定义树的方向,可选值有
LR
(左到右)、RL
(右到左)、TB
(上到下)、BT
(下到上)、H
(横向)、V
(纵向),其中,LR、TB 本质一样,RL、BT 本质一样,H 或 V 可以构建左右同时存在的“树”,或者上下同时存在的“树”,但具体渲染为横向还是纵向,不取决于这些值!!!
- getHeight(d):返回节点高度,即 d.height,默认值 36
- getWidth(d):返回节点宽度,即 d.width,默认值取 d.label 的字数*18,例如 d.label = ‘abcd’,则字数为 4,宽度为 72
- getChildren(d):返回节点的儿子节点,默认为 d.children
- getId(d):返回节点的唯一标识,默认取 d.id || d.name
- getHGap(d):返回节点的横向间距,即 d.hGap,默认 18
- getVGap(d):返回节点的纵向间距,即 d.vGap,默认 18
getSide(d)
:极其重要的方法,可以区分左右树或者上下树,返回节点的方向,可选值 left 和 right,不同的节点设置不同的值,即可将树分为左右或者上下结构- 当设置为 left,树向左(横向时)、向上(纵向时)渲染
- 当设置为 right,树向右(横向时)、向下(纵向时)渲染
- direction:定义树的方向,可选值有
- 返回的值形如下代码,已经是一个完整计算好的树状结构了
1 | { |
traverse(data)
- 一个递归函数,由用户自己定义节点细节,目的是为了得到形如 Model.FromJSONData 的一个对象,包含 nodes 和 edges 数组。
- nodes 是一个 Node 的数组,配置和基本的 Node 配置完全一致, 但是,根据 x 和 y 从 data 的选值不同,可以使渲染的结果为横向或纵向,例如
1 | // 以下结果渲染为横向 |
最后调用 graph.fromJSON(model) 即可将配置渲染为树状图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mosu!
评论
ArtalkGitalk