【问题标题】:d3.js reset positon of viewportd3.js 重置视口位置
【发布时间】:2025-12-15 07:15:02
【问题描述】:

我使用 dagre 和 d3 来显示图表。可以拖动和缩放图形元素和视口。每当我重绘图形(或绘制另一个图形)时拖动/缩放视口后,视口会保持在之前设置的位置,但会在第一次交互时重置(跳转到 [0,0] 和默认缩放比例)。

如何通过函数调用重置视口在d3中的位置?

【问题讨论】:

    标签: javascript jquery d3.js


    【解决方案1】:

    Dagre 作者在这里 - 您使用的是 dagre 演示还是这个自定义代码?如果您使用的是 dagre 演示,我可以确认您正在观察的行为,解决方法是添加以下行:

    svgGroup.attr("transform", "translate(5, 5)");

    在此代码块之前(dagre/demo.js,我的树中的第 252 行):

    svg.call(d3.behavior.zoom().on("zoom", function redraw() {
        svgGroup.attr("transform",
              "translate(" + d3.event.translate + ")"
              + " scale(" + d3.event.scale + ")");
    }));
    

    我已经更新了这张票下源代码中的演示:https://github.com/cpettitt/dagre/issues/56

    谢谢!

    【讨论】: