【问题标题】:JSNewtworkX stop layoutJSNewtworkX 停止布局
【发布时间】:2013-06-25 08:58:30
【问题描述】:

我正在使用 JSNetworkX 进行图形探索和渲染。

JSNetworkX 使用 D3.js 进行图形渲染。但是,由于我使用大型图形(约 5Mb 的 json 文件),我想直接渲染此图形而无需任何动画(因此,直接放置每个节点而无需强制吸引)。

我尝试在渲染后使用 D3.layout.force().stop() ,但它没有效果。 因此,我认为它必须在 jsnx.draw 中完成,请参阅下面的代码。

jsnx.draw(G, {
    element: 'body',
    d3: d3,
    layout_attr: {
        charge: -1500,
        linkDistance: 1,
        gravity: 1,
        friction: 0.4,
        alpha: -100
    },
});
force = d3.layout.force();

【问题讨论】:

  • 很遗憾,当前版本无法做到这一点。您是否需要强制布局,或者您是否已经为每个节点设置了位置? FWIW,如果你真的有一个大图,即使是静态布局也会很慢,因为你仍然有太多的 SVG 元素。下一个版本将包括为大型图呈现的 WebGL。
  • 噢...好的,明白了。我已经为每个节点(聚类)提供了近似位置。所以,我将使用 D3 静态图。对于 5mb 的图形,渲染大约需要 15 秒...但现在已经足够了...感谢您的评论和感谢 JSNetworkX :)(我会关注他的开发)非常感谢 :)

标签: graph d3.js force-layout jsnetworkx


【解决方案1】:

很遗憾,当前版本无法做到这一点。您是否需要强制布局,或者您是否已经为每个节点设置了位置? FWIW,如果你真的有一个大图,即使是静态布局也会很慢,因为你仍然有太多的 SVG 元素。下一个版本将包括为大型图呈现的 WebGL。

所以,我们暂时不能。

【讨论】:

    【解决方案2】:

    从 v0.3.4 开始,jsnx.draw 返回强制布局对象,因此您可以执行var force = jsnx.draw{/*...*/} 然后force.stop()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2018-05-20
      相关资源
      最近更新 更多