在原始数据中,是以一个数组的形式返回节点信息及依赖关系。所以,需要对数据进行处理形成图所需要的数据,同时,利用多个 map 对数据进行存储,方便后续对数据进行检索,减少时间复杂度。
实例节点的样式需要通过基础图形 Text(文本)、Rect(矩形)、Icon(图标)进行组合,以达到我们的设计要求。
在前面提到,在复杂的图场景中,需要将超过一定数量的同层节点聚合起来,以达到清晰直观地传达图所要表达的信息的目的,所以需要对图的层级及节点进行处理,从而生成聚合节点和去掉多余的节点。
通常来说,DAG 的布局可以按照以下步骤实现。
- 去环:包括自环和非自环,为节点分层做准备。
- 节点分层:给所有节点安排合适的层级。
- 节点排序:同层级内节点排序,减少相邻层级中节点连续的交叉点数量。
- 节点坐标分配:根据分层和同层节点的排序计算节点位置。
- 节点所在层级固定:DAG 布局既能支持自动计算层级,也能接受直接指定节点分层。
-
可能产生同层级连线:将同一层级里有连线的节点进行分组,进行内部排序后,视为整体再参与当前层级的排序,以减少交叉点的数量。