【问题标题】:Automatic Layout of Swimlane Graphs [closed]泳道图的自动布局[关闭]
【发布时间】:2015-11-11 22:36:54
【问题描述】:

我正在寻找可以帮助我以泳道格式布置流程图的算法/库。

例子:

制作和销售鞋子的过程可能如下所示(非常简化):

  • 皮革公司提供皮革
  • 鞋匠用皮革制作鞋子
  • 鞋类零售商卖鞋

在这种情况下,我希望它以泳道格式显示,即每个角色(皮革公司、鞋匠、鞋零售商)都有一个泳道。在每条泳道上都会显示相应的流程步骤。这与 UML 活动图非常相似。

有没有图书馆可以做到这一点?我看过 d3.js,但我不确定他们是否能够自动布局。

或者,如果没有任何用于此特定目的的库,是否有最先进的算法(可能有,但我还没有找到)我可以在这种情况下使用?

【问题讨论】:

  • 欢迎来到 SO。不幸的是,您的问题是题外话。 SO 不是 LMGTFY。当你有一个算法并在使用它时遇到问题时回来。
  • 寻找 Business Process Model and Notation (BPMN) 图表库,因为 bpmn 大量使用泳道

标签: php d3.js uml activity-diagram graph-layout


【解决方案1】:

如果您要求实现一种算法,我建议您查看用于绘制有向图的 Sugiyama 算法。为了支持像泳道这样的特性,算法需要通过以下方式进行扩展:

如果您的图表主流与泳道指向的方向相同,则您需要在排序阶段限制节点,以便根据与游泳相同的顺序对每一层以相同的方式对它们进行排序车道。如果您的泳道与水流正交,您需要以同样的方式影响和约束分层阶段。这两个概念可以组合在一起同时工作,因此可以实现泳道列和行的 2D 网格。您还需要调整算法的最终节点坐标分配阶段,以根据泳道边界对齐有序节点。

这是非常重要的,并且没有很多可用的好的实现。我不知道可以做到这一点的 d3js 的免费实现。

我工作的公司(我在此代表)有一个提供此功能的商业库。见this live example

【讨论】:

  • mxGraph 可以生成如图所示的泳道图。我只需要做细粒度的事情,这样最终的结果就会符合我的期望。它的 API 非常大,只有开发人员的技能和创造力才能发挥其最大潜力来创建各种漂亮的图表。不过,我仍在学习它的 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多