Javascript 更改d3 SVG画布的缩放级别?
我有一个从我自己的数据构建一个数据库的地方 如果我选择大约五到六个基因,我的图表中的节点开始在画布外绘制 我需要调用D3API的哪些部分来控制缩放级别,以便节点不会从画布边缘消失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"
如果可以的话,我肯定会非常感谢任何简要解释这个概念的代码片段,除非实现相当简单。感谢您的建议。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;
}