2

我试图使用 d3.js 可视化图表。我尝试了两种布局,bundle-radial 和 force。

Bundle-radial 不起作用,因为每个节点都需要一个父节点,它不适合图形可视化。

对于强制布局,脚本挂起。可能是因为这个图中有很多节点和边。我也不需要力布局附带的模拟。

我可以尝试使用 d3.js 中的任何其他布局吗?

4

1 回答 1

4

如果不需要仿真,可以静态使用力布局。调用force.start后,调用force.tick几次,然后调用force.stop以停止模拟:

// Run the layout a fixed number of times.
// The ideal number of times scales with graph complexity.
// Of course, don't run too long—you'll hang the page!
force.start();
for (var i = n; i > 0; --i) force.tick();
force.stop();

在某些情况下,它可能有助于确定性地初始化节点位置,以鼓励模拟快速收敛到一个好的解决方案。如果您不初始化位置,则力布局将随机初始化它们,因此可能有点不可预测。例如,这里我沿对角线初始化节点:

// Initialize the positions deterministically, for better results.
var n = nodes.length;
nodes.forEach(function(d, i) { d.x = d.y = width / n * i; });

最后,如果您使用的是静态布局,请考虑使用鱼眼失真以仍然允许交互式探索。

于 2012-04-11T15:59:33.003 回答