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. 更改計時器的時間間隔
- 3. 改變間隔
- 4. SetTimer不改變時間間隔
- 5. 時間間隔後圖像的變化
- 6. 如何更改perfmon時間軸間隔
- 7. 將間隔時間更改爲隨機?
- 8. Swift NSTimer動態更改時間間隔
- 9. 更改NSTimer的時間間隔
- 10. 日期時間計時器時間間隔不會改變加
- 11. 在一段時間間隔後更改一個整數值ios
- 12. 圖片查看特定時間間隔後更改圖像
- 13. 如何在特定時間間隔後更改列值 - Cassandra
- 14. 在變量時間間隔後更改tableview中高亮顯示的單元格
- 15. sleepForTimeInterval更改間隔
- 16. 將時間間隔從5秒改變爲特定時間
- 17. 在R中將開始結束時間間隔更改爲更小的間隔
- 18. 動態更改計時器中的超時時間間隔
- 19. 更改方向時無法清除時間間隔或超時
- 20. 更改日期時間分隔符
- 21. 如何更改/更新NSTimer中的時間間隔?
- 22. Android:AppWidgetProvider不能更改更新間隔時間
- 23. 更改輪詢間隔2010
- 24. Bootstrap輪播間隔更改
- 25. setInterval的更改間隔
- 26. 在if語句中更改計時器的時間間隔
- 27. 在相同的時間間隔上更改類名(懸停時)
- 28. Angular 2中的路由更改時的結束時間間隔
- 29. 更改定時器的時間間隔在C#
- 30. 如何更改java定時器的時間間隔
我相信你看了[我之前發送的例子](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