我想要有一个dc.js图表,它沿着一个选项滑动,例如在纳斯达克示例https://dc-js.github.io/dc.js/中,您将选择时间的子选择,然后单击“动画”按钮,选择过滤器将以预先确定的步长沿x轴滑动。
我有点迷失在哪里可以开始......有没有人有任何想法?
答案 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,它是两个日期的数组。希望很清楚如何在动画中添加开始/停止按钮。
这种做法有两件事很棘手:
当您还有计时器或流数据时,使用带过渡的图表很棘手。在这种情况下,我不得不将chart.filter()
减少到500毫秒才有意义,但因果关系仍然有点令人困惑。不知道该怎么办。
区域图transitions are incorrect所以你会得到一些奇怪的文物。