首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法缩放d3技术

无法缩放d3技术
EN

Stack Overflow用户
提问于 2017-12-11 02:51:17
回答 1查看 275关注 0票数 3

我使用的代码与http://techanjs.org/中使用的代码几乎相同。我试图在图表中添加缩放功能,因为开发人员已经在here中呈现了图表。但不知何故,我不能放大它。我收到错误,控制台中没有定义选择。我使用下面的代码来呈现图表。https://paste.fedoraproject.org/paste/7gJq9wKL4h4s862EDuxnQQ。我确信我在这里做错了什么,如果我能得到任何帮助,我会非常感激,因为我还在学习D3。

EN

回答 1

Stack Overflow用户

发布于 2017-12-13 04:52:35

我猜问题在于您引用了变量selection,但它并未定义。

因此-

未定义

选择

selection是传递给bigchart函数的参数。

但是您可以在未定义它的resetzoomed函数中使用它。

代码语言:javascript
复制
//Zoom Begins
 function reset() {
        zoom.scale(1);
        zoom.translate([0,0]);
        selection.call(draw); // this will throw an error
    }

    function zoomed() {
        x.zoomable().domain(d3.event.transform.rescaleX(zoomableInit).domain());
        y.domain(d3.event.transform.rescaleY(yInit).domain());
        yPercent.domain(d3.event.transform.rescaleY(yPercentInit).domain());

        selection.call(draw); // this will throw an error
    }
//Zoom Ends

要解决这个问题,要么将选择作为参数传递给函数(就像其他函数一样),要么将selection设置为BigChart的属性,这样resetzoomed函数就可以引用它。

代码语言:javascript
复制
 // pass selection to the functions as a parameter

 function reset(selection) {
    zoom.scale(1);
    zoom.translate([0,0]);
    selection.call(draw);
 }

 function zoomed(selection) {
    x.zoomable().domain(d3.event.transform.rescaleX(zoomableInit).domain());
    y.domain(d3.event.transform.rescaleY(yInit).domain());
    yPercent.domain(d3.event.transform.rescaleY(yPercentInit).domain());
    selection.call(draw);
 }

然后,当你调用这些函数时,显然你传入了正确的对象。

代码语言:javascript
复制
zoom = selection.call(d3.zoom().on("zoom", zoomed));

而不是

代码语言:javascript
复制
zoom = d3.zoom().on("zoom", zoomed),
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47742282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档