【发布时间】:2017-01-16 04:43:36
【问题描述】:
我正在将我的 d3 代码从 v3 迁移到 v4,但在查找 d3.zoom.x、d3.zoom.y 属性的等效项时遇到问题。
下面是一小段代码,包括最重要的元素:
this.init = function(obj, def) {
/* X-axis */
x = d3.scaleTime()
.range([0, width]);
xAxis = d3.axisBottom(x)
.ticks(ticks);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")");
/* Y-axis */
for (var i = 0; i < 1; i++) {
// Returns the y and yAxis as arrays
createYAxis(i);
}
initZoom();
};
// Zoom trigger
var drawUpdXY = function(){
setPause(true);
drawUpd();
zoomY.y(y[0]);
zoomX.x(x);
zoom = d3.zoom()
.on("zoom", drawUpdXY);
zoomX = d3.zoom()
.on("zoom", drawUpdX);
zoomY = d3.zoom()
.on("zoom", drawUpdY);
};
我尝试用它来替换“zoom.x(x); zoom.y(y[0])”
xAxis.scale(d3.event.transform.rescaleX(x));
yAxis[0].scale(d3.event.transform.rescaleY(y[0]));
但是,这些只会重新缩放轴,而不会缩放数据。
【问题讨论】:
-
既然这个比较老了,你有没有找到解决办法?我遇到了同样的问题。
-
今天还没有找到解决方案 - 我决定等到有更大的 v4 社区。span>
-
tl;dr:这可能有助于重组你的重构,查看链接了解原因和方式,以及它的工作示例 b> 我正在做一个类似的项目,试图在 d3v4 和 React 中实现平移/缩放坐标网格系统。在此过程中,我使用了article explaining how the new zooming/panning works,这让我意识到我必须重新考虑如何构建我的重构。然后,我在纯 d3 中创建了这个 codepen of what I was trying to make。仍在 React 方面工作。
标签: javascript zooming d3.js