Tôi đang di chuyển mã d3 của tôi từ v3 sang v4 và gặp sự cố tương đương với thuộc tính d3.zoom.x, d3.zoom.y.d3v4 - phóng to (Tương đương với d3.zoom.x)
Dưới đây là một phần ngắn của mã, bao gồm các yếu tố quan trọng nhất:
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);
};
Tôi đã cố gắng sử dụng này để thay thế "zoom.x (x); zoom.y (y [0]) "
xAxis.scale(d3.event.transform.rescaleX(x));
yAxis[0].scale(d3.event.transform.rescaleY(y[0]));
Tuy nhiên, chúng chỉ giải phóng trục, để dữ liệu không được khuếch đại.
Do đây là khá cũ, đã bao giờ bạn tìm một giải pháp? Tôi bị mắc kẹt trên cùng một vấn đề. – jmk
Đã không tìm thấy giải pháp cho ngày này - tôi quyết định đợi cho đến khi có cộng đồng lớn hơn cho v4. –
** _ tl; dr: _ Nó có thể giúp tái cấu trúc refactor của bạn, xem các liên kết để đi bộ qua lý do tại sao và làm thế nào, và một ví dụ của nó làm việc ** Tôi đang làm việc trên một dự án tương tự đang cố gắng thực hiện một panning/phóng to hệ tọa độ lưới tọa độ trong d3v4 và React. Trên đường đi, tôi đã sử dụng [bài viết này giải thích cách thu phóng/panning mới hoạt động] (http://emptypipes.org/2016/07/03/d3-panning-and-zooming/), và khiến tôi nhận ra rằng mình phải suy nghĩ lại cách tôi cấu trúc refactor của tôi. Sau đó, tôi tạo ra [codepen của những gì tôi đã cố gắng để thực hiện] (https://codepen.io/mduleone/pen/wJxrbj) trong d3 tinh khiết. Vẫn đang làm việc ở phía React. – mduleone