1
A
回答
1
对于当前主题,我使用了this示例,并向on.('zoomed')
图表侦听器添加了一些逻辑。我在JSFiddle上为其他人写了一些例子。
// read data
let experiments = d3.csv.parse(someCsvData);
//create and bind charts
let chart = dc.lineChart('#chart'),
scrollChart = dc.barChart('#scrollChart');
// parse date
experiments.forEach(x => {
x.date = Date.parse(x.date);
});
// create crossfilter, dimension and group
let ndx = crossfilter(experiments),
dim = ndx.dimension(d => new Date(d.date)),
scrollGroup = dim.group(d3.time.month).reduceSum(d => +d.volume)
// define function for selecting time ticks
const getNormalizingTimeFunction = (dataSize) => {
switch (true) {
case dataSize < 100:
return d3.time.day;
case dataSize < 300:
return d3.time.week;
default:
return d3.time.month;
}
}
// create `start` and `end` time points
let startDate = experiments[0].date;
let endDate = experiments[experiments.length - 1].date;
scrollChart
.width(768)
.height(50)
.x(d3.time.scale().domain([startDate, endDate]))
.margins({left: 50, top: 10, right: 10, bottom: 20})
.clipPadding(10)
.dimension(dim)
.group(scrollGroup)
.alwaysUseRounding(true)
.elasticY(true)
.yAxis().ticks(0);
chart
.width(768)
.height(480)
.brushOn(false)
.x(d3.time.scale().domain([startDate, endDate]))
.margins({left: 50, top: 10, right: 10, bottom: 20})
.rangeChart(scrollChart)
.dimension(dim)
.group(scrollGroup)
.renderArea(true)
.on('zoomed', (chart) => {
let actions = dim.top(Infinity);
let normalizeTime = getNormalizingTimeFunction(actions.length);
let newGroup = dim.group(normalizeTime).reduceSum(d => +d.volume)
chart.group(newGroup);
chart.redraw();
});
chart.render();
scrollChart.render();
相关问题
- 1. 更改计时器的时间间隔
- 2. SetTimer不改变时间间隔
- 3. 时间间隔后图像的变化
- 4. Swift NSTimer动态更改时间间隔
- 5. 更改NSTimer的时间间隔
- 6. 将间隔时间更改为随机?
- 7. 日期时间计时器时间间隔不会改变加
- 8. 如何在特定时间间隔后更改列值 - Cassandra
- 9. 在变量时间间隔后更改tableview中高亮显示的单元格
- 10. 将时间间隔从5秒改变为特定时间
- 11. 更改日期时间分隔符
- 12. Android:AppWidgetProvider不能更改更新间隔时间
- 13. 更改轮询间隔2010
- 14. setInterval的更改间隔
- 15. Bootstrap轮播间隔更改
- 16. 在if语句中更改计时器的时间间隔
- 17. 如何更改java定时器的时间间隔
- 18. 我如何更新我的NSTimer,因为我改变了时间间隔的值
- 19. 什么是改变对的最有效的时间间隔?
- 20. 我们可以动态改变“时间表”的间隔吗?
- 21. 如何更改一段时间间隔的UIButton的颜色
- 22. 隐藏和更改时间间隔的元素
- 23. 设置/更改lock_monitor默认时间间隔
- 24. 更改每周日历的时间间隔
- 25. 以不同的时间间隔更改uilabel文本
- 26. 如何更改Formtastic中的日期时间间隔
- 27. 从服务启动一项活动(更改时间间隔) - Android
- 28. 与设定的时间间隔更改背景图片
- 29. 服务器发送的Evenets:更改时间间隔
- 30. C++:更精确的时间间隔
我相信你看了[我之前发送的例子](http://dc-js.github.io/dc.js/examples/switching-time-intervals.html)。你有没有尝试整合它?接下来发生了什么? – Gordon
是的,但可能没有完全理解。如果我使用'.rangeChart',我应该从哪里调用你的'setup()'函数?添加到'onFiltered'侦听器? –
我会和['zoomed'事件](http://dc-js.github.io/dc.js/docs/html/dc.baseMixin.html#on__anchor)上的监听器一起去。如果在dc.js中包含一个例子,这将是太棒了。如果你想贡献,也许你可以开始一个小提琴[通过分叉这个](http://jsfiddle.net/gordonwoodhull/u57bfje8/),从'zoomed'监听器和另一个例子中的代码开始,看看什么打破并更新您的问题? – Gordon