Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3.具有多个列的嵌套_Javascript_D3.js - Fatal编程技术网

Javascript d3.具有多个列的嵌套

Javascript d3.具有多个列的嵌套,javascript,d3.js,Javascript,D3.js,我有一个具有以下结构的csv,我想在d3中创建一个多线图: date,value1,value2,value3 1924-01-01,433.57,16.21,122.09 1925-01-01,247.68,18.55,115.38 为此,我需要获得以下结构: date,category,n 1924-01-01,value1,433.57 1924-01-01,value2,16.21 1924-01-01,value3,122.09 1925-01-01,value1,247.68 19

我有一个具有以下结构的csv,我想在d3中创建一个多线图:

date,value1,value2,value3
1924-01-01,433.57,16.21,122.09
1925-01-01,247.68,18.55,115.38
为此,我需要获得以下结构:

date,category,n
1924-01-01,value1,433.57
1924-01-01,value2,16.21
1924-01-01,value3,122.09
1925-01-01,value1,247.68
1925-01-01,value2,18.55
1925-01-01,value3,115.38
我尝试过不同的方法,但没有成功。例如:

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

var values = ['value1','value2','value3']

var nestedData=d3.nest()
  .key(function(d) {return d.values;})
  .sortKeys(d3.ascending)
  .entries(data)
我做错了什么

提前谢谢。

做了与您所寻找的完全相同的事情,没有
d3.nest()
。那里的数据结构与您的数据结构相同(除了它是制表符而不是逗号分隔的):

这是示例中执行数据转换的代码(添加注释以进行解释):

使用此代码只需更改日期格式。您可能还需要更改变量名,以明确您要处理的是什么。

执行与您要查找的完全相同的操作,而不使用
d3.nest()
。那里的数据结构与您的数据结构相同(除了它是制表符而不是逗号分隔的):

这是示例中执行数据转换的代码(添加注释以进行解释):


使用此代码只需更改日期格式。您可能还需要更改变量名,以明确您要处理的内容。

完全符合您的要求。是吗?!我真的很困惑,我的问题一定在别的地方。谢谢你的建议!我会继续搜索。尤其是你不需要使用
d3.nest()
。这正是你想要的是吗?!我真的很困惑,我的问题一定在别的地方。谢谢你的建议!我会继续搜索。特别是你不需要使用
d3.nest()
。非常感谢!有了你的评论,我真的理解了一切,这很有教育意义。我很感激你花了这么多时间。非常感谢你!有了你的评论,我真的理解了一切,这很有教育意义。我很感激你花了这么多时间。
date    New York    San Francisco   Austin
20111001    63.4    62.7    72.2
20111002    58.0    59.9    67.7
20111003    53.3    59.1    69.4
// get the names of all the different series (everything that's not called "date")
color.domain(d3.keys(data[0]).filter(function(key) { return key !== "date"; }));

// parse the dates
data.forEach(function(d) {
  d.date = parseDate(d.date);
});

// restructure the data
var cities = color.domain().map(function(name) {
  // for each series, create an object with its name and its values
  return {
    name: name,
    // extract the value for the series we're processing at the moment from the data
    values: data.map(function(d) {
      return {date: d.date, temperature: +d[name]};
    })
  };
});