D3.js带有CSV多级数据的折线图

时间:2015-02-24 18:54:23

标签: csv d3.js data-visualization linechart

可能是一个初学者的问题,但在看了大量的例子后,我无法理解如何d3.nest()或d3.map()或任何必要从我的CSV中提取我想要的数字-file with D3.js。

我有一个包含以下数据的CSV文件:

name,year,number1,number2,number3
Superman,2003,227141296,214978953,212418250
Superman,2004,232769230,220606887,211301729
Superman,2005,192769230,220606887,211301729
Batman,2003,252873171,239836381,225174161
Batman,2004,286137492,262439880,243001175
Batman,2004,232769230,220606887,211301729
Spiderman,2006,309584667,279490239,248758932
Spiderman,2007,324081833,278022620,246734614
Spiderman,2008,294081833,278022620,246734614

我想要做的是创建:

  • 每个名称的一个折线图
  • 每个数字的折线图中的一个路径/行。
  • 年份为X轴

d3.nest()是否能解决这个问题? 在这种情况下,我是否必须为我想要绘制的每个路径重复嵌套?

如果答案显而易见并且您必须阅读本文,我感到很抱歉,但如果您只能引导我朝着正确的方向前进,我将会非常感激!

d3.csv("budsjettgrafikk.csv", function(error, data){

   data.forEach(function(d) {
       ***???***;
   })
   d3.nest()
       ***???*** ;
});

1 个答案:

答案 0 :(得分:2)

是的,d3.nest()就是你想要的。

d3.nest()
  .key(function(d) { return d.name; })
  .entries(data)

这会将数据转换为您需要的形式;即一个2D数组(更确切地说是每个对象中具有较低级别数组的对象数组),其中顶层有2个成员(“超人”和“蝙蝠侠”),每个成员都包含一行记录。

要渲染线条,因为这是一个嵌套的数据结构,您需要了解如何使用nested selections