【问题标题】:D3.js Brush & Zoom to Rescale Y-Axis By Zoomed Range's ValuesD3.js 画笔和缩放以通过缩放范围的值重新缩放 Y 轴
【发布时间】:2017-01-28 23:35:07
【问题描述】:

在修改此演示时,根据 zoome 范围的值自动缩放 Y 轴范围/域的最优雅方法是什么?

https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172

一定有一些 d3-zoom 方法可以完成访问缩放范围的值,但还没有弄清楚那些会是什么......?

【问题讨论】:

    标签: javascript d3.js


    【解决方案1】:

    我不知道什么是最优雅的方式(直到有人展示它)。但是,这是我的解决方案。

    首先,我们根据缩放对数据进行过滤:

    var filteredData = data.filter(d=>d.date > x.domain()[0] && d.date < x.domain()[1]);
    

    然后,我们相应地改变y域:

    y.domain([0, d3.max(filteredData, function(d) { return d.price; })]);
    

    这是演示,放大和缩小以查看 y 轴的变化: https://bl.ocks.org/anonymous/raw/9f8c2edcb5950cac61f1bc3873886ec5/

    当您放大太多时,此其他版本会避免 NaN: https://bl.ocks.org/anonymous/raw/56fa7fe37596f753db74fdad58ba6725/

    PS:我必须移动一些函数(由于范围问题)才能访问函数 zoomed 中的 data

    【讨论】:

    • 你也可以在brushed()函数中做同样的事情,这样y轴在你刷的时候重新缩放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多