用途:当问题不是“用哪种图形记号”,而是“如何摆放连通节点让图保持可读”时使用本技能。目标是让自动布局强化预期阅读路径,尽量减少交叉、折弯、重叠与意外位置。
主要能力:先对图结构分类(有序树/森林、DAG、有主导流向的有向环图、一般无向图、放射或轮辐结构、聚类或复合图、端口约束框图、表格式模式或 ERD、接近平面且以交叉数为主的拓扑);再识别主要阅读任务(父子深度、自上而下或自左而右流向、可达性与依赖追踪、聚类发现、环检查、最短路径或邻域探索、表关系追踪、稳定编辑少漂移);记录几何约束(真实节点宽高、标签可读性、端口与固定连接顺序、嵌套分组与泳道、固定或半固定节点)。
布局选择:有序树与决策树用 Reingold-Tilford 风格整齐树及 Buchheim 线性时间改进;状态机、依赖图、工作流、类层次、ERD 及多数 UML 类有向图用 Sugiyama 分层布局,并把断环、分层、交叉最小化、节点摆放、连线走线分开处理;无向关系探索用应力主化或力导向,大图用多层级力方法;以到根距离为主时用放射或同心布局;以环结构为证据时用环形布局;非平面但以低交叉数为目标时可考虑平面化流程。
走线与后处理:稀疏且方向清晰用直线或折线;表格、端口、框图、泳道用正交走线;静态美观且留白充足可用样条。重叠消除、标签放置、打包应作为独立阶段,先按真实尺寸布局,再为连接密集的表保留间隙,边标签避开节点主体。用户会编辑或对比版本时优先稳定性:保留节点顺序与端口顺序,使用交互式或约束感知分层模式,避免每次小改动重新随机布局。
常用技术栈:Graphviz dot 适合静态分层;neato 适合中等无向图;fdp、sfdp 适合力导向与多层级;twopi、circo 适合放射与环形;ELK Layered 适合需要端口、复合、标签、正交走线与约束的交互产品;React Flow 配合 ELK 或 Dagre 适合节点编辑器;Cytoscape.js 适合同时需要图分析与多种布局模式。
限制与反模式:不要把力导向当作所有图的通用答案;不要用重叠消除替代正确的布局族选择;不要忽略真实节点尺寸;不要让连线穿过表、泳道头或大标签;不要在图过密时硬塞进单一节点-链接视图,应改用过滤、分面、聚类、矩阵或概览加细节;移动端应优先显示最重要区域而非整体缩小,必要时提供横屏、搜索或逐步浏览。若问题本质是记号选择,应转向 UML 或策略技能。具体价格、平台与效果资料暂未提供。