如何使用d3将.csv文件加载到crossfilter中?

时间:2017-05-26 11:08:46

标签: d3.js dc.js crossfilter

我正在尝试将.csv文件加载到crossfilter中,以便与dc.js和d3一起使用。但是,如果ndx = crossfilter(data_)不在d3.csv(...内,则无效。是否可以在全局/外部变量(在本例中为ndx)中使用d3加载数据?

 var ndx;

 private method(){

        var data_;

        d3.csv("samples.csv", function(data){

            var format = d3.timeParse("%m-%y"); 

            data.forEach(function(d: any) {
                d.date = format(d.date);
            });

            data_ = d3.csvParse(data);
        });

        ndx = crossfilter(data_);
}

如何将其加载到crossfilter中? 我是否有义务在d3.csv(..电话中使用crossfilter?

解决方案: 我让我的.csv变成了一个.json,我同步加载它#39;请注意以下内容。

 var ndx;

 private method(){

        var data_ = (function() {
            var json: any = null;
            $.ajax({
                'async': false,
                'global': false,
                'url': "samples.json",
                'dataType': "json",
                'success': function (data:any) {
                    json = data;
                }
            });
            return json;
        })(); 

        ndx = crossfilter(data_);
}

观察:

  

' async':false

1 个答案:

答案 0 :(得分:1)

这是因为一旦返回数据,回调函数就会以异步执行。这意味着如果您将图表代码放在回调之外,您将获得您定义的空数组,因为尚未返回任何数据。