【发布时间】:2017-01-28 23:35:07
【问题描述】:
在修改此演示时,根据 zoome 范围的值自动缩放 Y 轴范围/域的最优雅方法是什么?
https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172
一定有一些 d3-zoom 方法可以完成访问缩放范围的值,但还没有弄清楚那些会是什么......?
【问题讨论】:
标签: javascript d3.js
在修改此演示时,根据 zoome 范围的值自动缩放 Y 轴范围/域的最优雅方法是什么?
https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172
一定有一些 d3-zoom 方法可以完成访问缩放范围的值,但还没有弄清楚那些会是什么......?
【问题讨论】:
标签: javascript d3.js
我不知道什么是最优雅的方式(直到有人展示它)。但是,这是我的解决方案。
首先,我们根据缩放对数据进行过滤:
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。
【讨论】: