letxExtent= d3.extent(d3.values(this.graph.nodes), function (n) {
returnn.x;
}),
yExtent= d3.extent(d3.values(this.graph.nodes), function (n) {
returnn.y;
});
letconfigwidth=this.width;
letconfigHeight=this.height;
//(整个屏幕的大小-(最大X-最小X))= 2边空余大小。
lettrY=configwidth- [xExtent[1]];
lettrX=xExtent[0];
letxty=configHeight-yExtent[1];
letxtt=yExtent[0];
//计算整个图像高x和高y 和高宽比
letscaleX=parseFloat((xExtent[1] -xExtent[0]) /configwidth);
letscaleY=parseFloat((yExtent[1] -yExtent[0]) /configHeight);
//不同的图形这里的缩放比例舒适程度是不同的这里是0.8
所以 0.8= (高宽最大的)比例 X 就得来 X= 0.8 比例
letscale=
parseFloat(0.6/Math.max(scaleX, scaleY)) ==”Infinity”
?1
:parseFloat(0.6/Math.max(scaleX, scaleY));
//偏移量就是 2边空余大小除以2等于2边的大小都一样大,
lettranslateX= trY-xExtent[0];
lettranslateY=-xty;
this.scale =scale;
if (scale==1) {
this.svg.call(
this.zoom.transform,
d3.zoomIdentity.translate(0, 0).scale(scale)
);
} else {
this.svg.call(
this.zoom.transform,
d3.zoomIdentity
// .translate(parseFloat(translateX scale), translateYscale)
.scale(scale)
);
}