【发布时间】:2017-01-31 16:04:23
【问题描述】:
我有一个图表可视化。
我通过缩放包含所有内容的<g> 添加了缩放。
这也会调整节点(圆圈)及其标签的大小。
据我所见,保持大小并仅重新定位完成like this:
function zoomed() {
var t = d3.event.transform;
circle.attr("transform", function(d) {
return "translate(" + t.applyX(d[0]) + "," + t.applyY(d[1]) + ")";
});
}
但这对我不起作用,因为我已经使用 translate 来通过d3.forceSimulation() 定位节点。我可以像上面那样应用缩放,但是当模拟再次开始时,这一切都会回落 - 例如拖动节点时,使用:
function dragstarted() {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
...
如何将模拟和缩放结合起来?
- 我正在考虑的一种方法是按比例缩小所有节点以用于缩放。
- 其他方式可能是设置样式 - 更小的字体、更小的圆圈等。
- 其他方式可能是篡改力,使节点在放大时彼此远离。
【问题讨论】:
标签: javascript d3.js zooming simulation