dc.js沿x轴的动画选择

时间:2017-11-06 09:29:48

标签: d3.js dc.js crossfilter

我想要有一个dc.js图表​​,它沿着一个选项滑动,例如在纳斯达克示例https://dc-js.github.io/dc.js/中,您将选择时间的子选择,然后单击“动画”按钮,选择过滤器将以预先确定的步长沿x轴滑动。

我有点迷失在哪里可以开始......有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

您需要做的大部分工作是根据计时器在相关图表上设置当前过滤器,而不是基于用户交互。

我已将纳斯达克示例的相关部分复制到一个小提琴中,以说明这一点:https://jsfiddle.net/0zkbyyqu/9/

图表一旦到位,动画只需根据setInterval更改过滤器。出于不明原因,我们希望使用focus的{​​{1}}方法,而不是moveChart方法,但它基本上做同样的事情,只需要更多代码来反映更改范围图表:

filter

(如果您使用var beginYear = 1985; window.setInterval(function() { moveChart.focus([ new Date(beginYear, 0,0,0,0,0,0), new Date(beginYear+3, 0,0,0,0,0,0)]); if(++beginYear > 2009) beginYear = 1985; }, 1000); 方法,则必须构建filter,详见此处:Initial Range selection in DC.js chart

我已经不再考虑用户对该系列的初步选择,而且只需3年的时间。此示例只在加载后立即开始动画。您可以使用dc.filters.RangedFilter获取当前过滤器;结果将是RangedFilter,它是两个日期的数组。希望很清楚如何在动画中添加开始/停止按钮。

这种做法有两件事很棘手:

  1. 当您还有计时器或流数据时,使用带过渡的图表很棘手。在这种情况下,我不得不将chart.filter()减少到500毫秒才有意义,但因果关系仍然有点令人困惑。不知道该怎么办。

  2. 区域图transitions are incorrect所以你会得到一些奇怪的文物。