【问题标题】:Re-scale axis when zoomed缩放时重新缩放轴
【发布时间】:2018-12-11 21:33:16
【问题描述】:

我正在创建一个与此类似的图表: https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172

但是,当我放大某个部分时,我想将 Y 轴缩放到局部(显示)最大值,而不是全局最大值。例如,当我放大到 2009 年到 2010 年之间的数据时,顶部有很多空白区域。

基本上我想要实现的是获得我已缩放的范围,并获得其中的最大值。

另一种可能是在侧面添加另一个画笔栏,但从长远来看,这对用户来说非常不方便。

【问题讨论】:

  • 这是 v3 的副本,我认为 v4 也是如此(因为音阶名称的变化很小)。但是,为了避免争论,我在下面给你写了一个答案。

标签: javascript html d3.js svg charts


【解决方案1】:

您只需为此更改 y 比例域。

首先,让我们创建一个名为globalData 的全局变量并将数据数组关联到它。注意:这不是正确的方法,但我会这样做只是因为brushedzoomed 函数位于d3.csv 之外,这是异步 em>,并且重构它需要一些工作......所以,重构它将是你的工作。

然后,在brushedzoomed这两个函数中,我们根据画笔过滤数据:

var filteredData = globalData.filter(function(d){
    return d.date > x.domain()[0] && d.date < x.domain()[1]
});

之后,我们计算新的y域:

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

不要忘记再次调用轴。

这是更新的 bl.ocks:https://bl.ocks.org/GerardoFurtado/17fd6b82324e355c768992e78140fe9a/33b9a6c58265454864a9d921df032e708fad5237

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2015-09-02
    • 2012-08-05
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多