【发布时间】:2017-02-08 10:01:24
【问题描述】:
这是我关于mac地址的数据。每分钟记录一次。每一分钟,我都有许多唯一的 Mac 地址。
mac_add,created_time
18:59:36:12:23:33,2016-12-07 00:00:00.000
1c:e1:92:34:d7:46,2016-12-07 00:00:00.000
2c:f0:ee:86:bd:51,2016-12-07 00:00:00.000
5c:cf:7f:d3:2e:ce,2016-12-07 00:00:00.000
...
18:59:36:12:23:33,2016-12-07 00:01:00.000
1c:cd:e5:1e:99:78,2016-12-07 00:01:00.000
1c:e1:92:34:d7:46,2016-12-07 00:01:00.000
5c:cf:7f:22:01:df,2016-12-07 00:01:00.000
5c:cf:7f:d3:2e:ce,2016-12-07 00:01:00.000
...
我想使用 dc.js 和 crossfilter 创建 2 个条形图。图表请参考图片。
第一个条形图很容易创建。它是可刷的。我创建了“created_time”维度,并通过“mac_add”创建了组和reduceCount,如下所示:
var moveTime = ndx.dimension(function (d) {
return d.dd; //# this is the created_time
});
var timeGroup = moveTime.group().reduceCount(function (d) {
return d.mac_add;
});
var visitorChart = dc.barChart('#visitor-no-bar');
visitorChart.width(990)
.height(350)
.margins({ top: 0, right: 50, bottom: 20, left: 40 })
.dimension(moveTime)
.group(timeGroup)
.centerBar(true)
.gap(1)
.elasticY(true)
.x(d3.time.scale().domain([new Date(2016, 11, 7), new Date(2016, 11, 13)]))
.round(d3.time.minute.round)
.xUnits(d3.time.minute);
visitorChart.render();
问题出在第二个条形图上。这个想法是,一行数据等于 1 分钟,所以我可以通过“mac_add”创建另一个维度并在“mac_add”上执行 reduceCount " 来获取时间长度。然后目标是将时间长度按 30 分钟分组。所以我们可以得到有多少时间长度为30分钟或更短的mac地址,有多少时间长度在30分钟到1小时之间的mac_add,有多少时间长度在1小时到1.5小时之间的mac_add等等......
如果我错了,请纠正我。从逻辑上讲,我认为第二个条形图的维度应该是时间长度的组(例如
所以我真的很困惑将哪些参数放入第二个条形图中。以及获取所需参数的方法(如何对分组数据进行分组)。请帮我解释一下解决方案。
问候, 马文
【问题讨论】:
标签: dc.js crossfilter