gpt4 book ai didi

javascript - d3.js 在重新缩放后获得新的域值

转载 作者:行者123 更新时间:2023-11-29 17:51:22 25 4
gpt4 key购买 nike

我尝试在重新调整坐标轴后获取新的坐标轴值。

我试图从 y.domain() 获取它们作为回答 here但返回的值是初始值。

那么我做错了什么?

相关代码:

function zoomed() {

for(let i = 0; i < ys.length; i++){
yAxes[i].call(
d3.axisLeft(ys[i])
.scale(d3.event.transform.rescaleY(ys[i]))
)
}

//Now I need the new values

console.log(ys[0].domain()) //returns [0, 10] which are my initial domain values for this axis.

}

缩放后,屏幕上的值大于 0 且小于 10。那么如何让我的域获得新的最小值和最大值?

Here是我旧版本代码的一个 fiddle ,它具有完全相同的行为(参见 zoomed() 函数)。

也许我误解了域是什么以及它是如何工作的,我需要的是轴的新最大值和最小值。

最佳答案

我的答案基于 fiddle 中的这段代码:

  function zoomed() {
let center = getBoundingBoxCenterX(rect);
let chartsWidth = (2 * center) * d3.event.transform.k;
d3.event.transform.x = center - chartsWidth / 2;
xAxis.call(d3.axisBottom(x).scale(d3.event.transform.rescaleX(x)));
yAxis.call(d3.axisLeft(y).scale(d3.event.transform.rescaleY(y)));
zAxis.call(d3.axisRight(z).scale(d3.event.transform.rescaleY(z)));

//here i need the new values
console.log(y.domain()) //returns [0,6]

编辑

您可以通过这种方式获得轴刻度:

let leftAxis = d3.axisLeft(y).scale(d3.event.transform.rescaleY(y));
console.log('new domain values', leftAxis.scale().domain())

我有一个可以正常工作的 fiddle 版本:https://jsfiddle.net/aj5sLz5u/

关于javascript - d3.js 在重新缩放后获得新的域值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43396924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com