【问题标题】:D3 Force Directed Graph nodes in orderD3 按顺序强制有向图节点
【发布时间】:2013-10-10 10:43:33
【问题描述】:

我正在使用力有向图来构建一种流程图。它工作正常,只是节点没有特定的顺序。它们是随机的。我希望图表遵循分层顺序。

var force = d3.layout.force()
    .nodes(d3.values(nodes))
    .links(links)
    .size([width, height])
    .linkDistance(90)
    .gravity(0.6)
    .charge(-2000)
    .linkStrength(0.3);

我想给节点一些(数字)层次结构。没有明确定义它们的位置。

我们将不胜感激。

【问题讨论】:

  • “订单”是什么意思?你想控制节点的位置还是创建层次结构?
  • 我认为使用简单的“强制定向布局”和层次结构根本不能很好地结合在一起。对于流程图和分层顺序,您应该看看基于 Sugiyama 的算法,例如:Hierarchical layout Demo - 这不是 D3,因此只是评论:-)

标签: javascript d3.js force-layout


【解决方案1】:

您可以将力布局与定量焦点一起使用,以便节点根据其数值层次结构定位。来自 Mike 的 talk 的演示(和代码):

问候

【讨论】:

  • 使用 quantitative focii 您仍然必须明确定义 focii 的位置,这是 OP 试图避免的。我也看不出链接的演示与这两者有什么关系。
  • 如果一个节点有多个父节点,则不能使用分层布局。该演示展示了力布局中的节点如何根据数值属性显示在不同的垂直位置(当然,仍然需要从数值层次结构到垂直位置的映射)。该演示不显示链接,但添加它们很容易。
  • 在图形绘制术语中,“分层布局”不仅用于描述简单的树状结构。这里允许任何数量的父母和孩子。我的印象是 OP 正在寻找Sugiyama styled hierarchical layout。在这种情况下,您不必指定任何坐标,“数值层次”可以直接映射到绘图中的图层 - 然后由算法确定确切的坐标。
猜你喜欢
  • 2013-01-14
  • 1970-01-01
  • 2018-02-18
  • 2017-08-27
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多