Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改d3 SVG画布的缩放级别?_Javascript_Zooming_Scale_D3.js - Fatal编程技术网

Javascript 更改d3 SVG画布的缩放级别?

Javascript 更改d3 SVG画布的缩放级别?,javascript,zooming,scale,d3.js,Javascript,Zooming,Scale,D3.js,我有一个从我自己的数据构建一个数据库的地方 如果我选择大约五到六个基因,我的图表中的节点开始在画布外绘制 我需要调用D3API的哪些部分来控制缩放级别,以便节点不会从画布边缘消失 如果可以的话,我肯定会非常感谢任何简要解释这个概念的代码片段,除非实现相当简单。感谢您的建议。D3允许使用缩放功能,而且实现起来相当简单。您只需要将图形包装在一个我称之为“viewport”的“g”元素中。然后,您将为svg元素的缩放事件指定: svg.call(d3.behavior.zoom().on("zoom"

我有一个从我自己的数据构建一个数据库的地方

如果我选择大约五到六个基因,我的图表中的节点开始在画布外绘制

我需要调用D3API的哪些部分来控制缩放级别,以便节点不会从画布边缘消失


如果可以的话,我肯定会非常感谢任何简要解释这个概念的代码片段,除非实现相当简单。感谢您的建议。

D3允许使用缩放功能,而且实现起来相当简单。您只需要将图形包装在一个我称之为“viewport”的“g”元素中。然后,您将为svg元素的缩放事件指定:

svg.call(d3.behavior.zoom().on("zoom", redraw))
以下功能:

function redraw() {
    d3.select("#viewport").attr("transform",
        "translate(" + d3.event.translate + ")"
        + " scale(" + d3.event.scale + ")");
}
在zoom函数中编写以下代码 attr(“transform”、“translate”(+w/2+)、“+h/2+”)比例(“+k+”)translate(“+-x+”、“+-y+”))

对于绝对比例,您可以使用此代码 这将有助于地图缩放和平移

可能重复的
var x, y, k;
            if (d && centered !== d) {
                var centroid = path.centroid(d);
                x = centroid[0];
                y = centroid[1];
                k = 4;
                centered = d;
            } else {
                x = w / 2;
                y = h / 2;
                k = 1;
                centered = null;
            }