加载文件时出错

时间:2018-04-24 14:51:17

标签: d3.js data-visualization

我想使用d3.js创建一张欧洲地图。 这是我的一段代码:

(function() {
covData = [];

// code...

var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];

promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));

Promise.all(promises)
    .then(makeMap)
    .catch(function(err) {
        console.log('Error loading files!');
        throw err;
    });

function makeMap(data) {
    var nuts0 = data[0];
    var nuts2 = data[1];
    var cov = data[2];
    console.log('cov:', cov);

    // code ...

    covData = d3.nest()
        .key(function(d) {
            return d.YEAR;
        })
        .key(function(d) {
            return d.ANTIGEN;
        })
        .object(cov);
    console.log('covData:', covData);
} 
// other code...
})(); // end file function

在浏览器上我收到此错误:

cov: Array [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
Error loading files!
TypeError: covData[yearSelected] is undefined

这是一个更完整的代码:http://plnkr.co/edit/8wJvay0FyAv6CtNo1Quh

加载文件时问题在哪里?

1 个答案:

答案 0 :(得分:2)

尝试将订单更改为您的代码。我的意思是:

(function() {
covData = [];

// code...

var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];

promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));

Promise.all(promises)
    .then(makeMap)
    .catch(function(err) {
        console.log('Error loading files!');
        throw err;
    });

function makeMap(data) {
    var nuts0 = data[0];
    var nuts2 = data[1];
    var cov = data[2];
    console.log('cov:', cov);

    covData = d3.nest()
        .key(function(d) {
            return d.YEAR;
        })
        .key(function(d) {
            return d.ANTIGEN;
        })
        .object(cov);
    console.log('covData:', covData);

    // code ...
} 
// other code...
})(); // end file function

在你的plunker中,console.log(cov)关于嵌套的代码之间有很多代码。 将代码放在console.log(cov)下面的嵌套上,然后就可以了。