我是DC&的新手crossfilter并且遇到了一些困难。
我有一个包含两个维度的数据文件,即im和fm。每个范围都来自[0,1000000]
。但是,我想过滤[0,300000]
之间的值,然后创建直方图。
以下是我的代码。当我将print_filter(grp)
输入控制台时,我假设它将显示6个组,每组50,000个,介于0到30000之间。但是它显示:
[object Object](17) = [
{"key":100000,"value":3776},
{"key":150000,"value":2192},
{"key":200000,"value":1098},
{"key":650000,"value":915},
{"key":800000,"value":824},
{"key":250000,"value":753},
{"key":500000,"value":652},
{"key":550000,"value":590},
{"key":900000,"value":567},
{"key":300000,"value":546},
{"key":350000,"value":538},
{"key":0,"value":527},
{"key":750000,"value":503},
{"key":400000,"value":483},
{"key":450000,"value":458},
{"key":600000,"value":299},
{"key":950000,"value":147}
]
超过300,000过滤器,并且还缺少500000的“密钥”。
代码:
d3.csv("imfmincome.csv", function(data1) {
data = data1
var ndx = crossfilter(data);
var byim = ndx.dimension(function(d) { return d.parentincomeim; });
var byfm = ndx.dimension(function(d) { return d.parentincomefm; });
byim.filter([0,300000])
byfm.filter([0,300000])
var n_bins = 6;
var xExtent = [0,300000];
var binWidth = (xExtent[1] - xExtent[0]) / n_bins;
var grp = byfm.group(function(d){return Math.floor(d / binWidth) * binWidth;});
chart = dc.barChart("#barChart");
chart
.width(200)
.height(180)
.margins({top: 15, right: 10, bottom: 20, left: 80})
.dimension(byim)
.group(grp)
.round(Math.floor)
.centerBar(false)
.x(d3.scale.linear().domain([0,300000]))
.xAxis();
chart.xUnits(function(){return 10;});
chart.xAxis().tickValues([0,300000]);
我的打印功能:
function print_filter(filter){
var f=eval(filter);
if (typeof(f.length) != "undefined") {}else{}
if (typeof(f.top) != "undefined") {f=f.top(Infinity);}else{}
if (typeof(f.dimension) != "undefined") {f=f.dimension(function(d) { return "";}).top(Infinity);}else{}
console.log(filter+"("+f.length+") = "+JSON.stringify(f).replace("[","[\n\t").replace(/}\,/g,"},\n\t").replace("]","\n]"));
}
任何建议都表示赞赏。谢谢!
答案 0 :(得分:0)
即使没有值,箱子仍然存在,所以从0到1,000,000的范围并不令人惊讶。事实上,没有500,000箱可能只意味着没有500,000-550,000的观测值。
令人惊讶的是,300,000以上的垃圾箱没有值0.虽然byfm
不会观察到自己的过滤器,但byfm
会观察byim
的过滤器。
是否可能存在高parentincomefm
但低parentincomeim
的观察结果?