D3 - 将CSV数据绑定到数组

时间:2016-10-30 07:34:54

标签: csv d3.js data-binding

早上好,

抱歉这是一个简单的问题,毫无疑问会显示我完全缺乏对这个问题的理解,虽然我已经玩了好几个小时试图理解这一点,但显然我错过了一些非常基本的东西。

我有一个我已成功加载的CSV文件:

d3.csv("data.csv", function(data) {
console.log(data);
});

它包含28行数据,包含4列。

我试图将数据“绑定”到依赖于列的3个独立数组......

var Array1 = [],
        Array2 = [],
        Array3 = []

    for (var i = 0; i < data.length; i++) {
      Array1.push([ i, 10]);
      Array2.push([ i, 20]);
      Array3.push([ i, 30]);
    }

以上代码有效,但没有链接到数据集......我真正想要的是下面显示的内容,其中大写字母标记CSV文件中的数据:

var Array1= [],
        Array2 = [],
        Array3 = []

    for (var i = 0; i < data.length; i++) {
      Array1.push([ FIRSTCOLUMN, SECONDCOLUMN]);
      Array2.push([ FIRSTCOLUMN, THIRDCOLUMN]);
      Array3.push([ FIRSTCOLUMN, FOURTHCOLUMN]);
    }

对不起,我意识到这是一个非常愚蠢的问题......但也许只是链接到一篇文章来解释我需要的东西真的有帮助吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

首先,你必须更好地解释你想要的结果,因为你在问题中所拥有的不是一个简单的数组,而是一个数组数组。如果您需要一个对象数组,其中每个对象的值都是第1列和任何其他给定列,请更新您的问题。

要根据您的数据构建简单数组,您可以使用firstColumn,secondColumn,thirdColumn,fourthColumn 12,3,44,35 15,32,17,42 //...

所以,假设这是你的CSV:

var myArray = data.map(function(d){
    return d.secondColumn;
});

例如,要构建具有第二列值的数组,请写:

function(data){...

在回调中(for(var i = 0; i < 100; i++){ newArray.push([i, myData[i].firstColumn]) }; )。

编辑:根据评论,这就是您想要的:

给定数据数组,您必须通过索引访问每个对象并按键选择相应的列。因此,要访问第一列中的值:

var myData = [{firstColumn: 4, secondColumn: 12, thirdColumn: 21, forthColumn: 11},
{firstColumn: 41, secondColumn: 22, thirdColumn: 71, forthColumn: 10},
{firstColumn: 10, secondColumn: 16, thirdColumn: 2, forthColumn: 15},
{firstColumn: 6, secondColumn: 32, thirdColumn: 7, forthColumn: 17},
{firstColumn: 33, secondColumn: 12, thirdColumn: 29, forthColumn: 19}];

var newArray = [];

for(var i = 0; i < 5; i++){
newArray.push([i, myData[i].firstColumn])
};

console.log(newArray)

对其他列执行相同操作。这是一个有效的演示:

BUILD -> Publish "Project Name"