我想用力布局做一些不寻常的事情(用于可视化图表)。星座和所有这些看起来都很有趣,但对于时间序列数据来说,它并没有那么有用。我希望能够通过某个轴来约束布局,例如,通过根据节点在数据集中出现的时间来布局节点,同时仍然保留可视化的“弹性”。使用 d3 可以吗?
详细说明我的评论,是的,这是完全可能的。力布局实际上并不定位节点本身,它只是计算位置。在处理程序中tick
如果您通常提供负责定位的函数。在那里,您可以添加任意约束来限制节点的移动方式。
采取其中之一股票例子,您可以执行如下操作,将 x 坐标限制在目标位置的 +-10 范围内,并且 y 不受限制。
force.on("tick", function() {
node.each(function(d) {
var intended = scale(d.value);
d.x = d.px = Math.min(intended + 10, Math.max(intended - 10, d.px));
});
node.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
});
这是另一个example使用力布局来定位标签。在那里,x 位置被忽略(即常量),只有 y 受布局影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)