Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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,我正在尝试使用以下格式的数据制作一个折线图: {state: 'New York', value:{year_2000: 1000, year_2001: 20000} 您如何在该数据中引用年份 var year = [2000, 2001]; var xScale = d3.scale.ordinal() .domain(year) .rangeRoundPoints([0, 100]); var yScale = d3.scale.linear() .domai

我正在尝试使用以下格式的数据制作一个折线图:

{state: 'New York', value:{year_2000: 1000, year_2001: 20000}
您如何在该数据中引用年份

var year = [2000, 2001];

var xScale = d3.scale.ordinal()
    .domain(year)
    .rangeRoundPoints([0, 100]);

var yScale = d3.scale.linear()
    .domain([0, d3.max(data, function(d){
       return d.value;
    })])
    .range([0, 100]);

var xAxis = d3.svg.axis()
    .scale(xScale)
    .orient("bottom")
    .tick(0);

var yAxis = d3.svg.axis()
    .scale(yScale)
    .orient("left")
    .tick(10);

var valueLine = d3.svg.line()
    .xScale(function(d) { return xScale(year); })
    .yScale(function(d) { return yScale(d.value); })

我认为
valueline
设置错误。我想知道如何参考年份和相应的数值来完成折线图。谢谢

简单地说:你不能使用那种数据结构

在D3中,v4中的行生成器
D3.line()
,或v3中的
D3.svg.line()

为给定的数据数组生成一行。(强调矿山)

因此,您必须更改数据结构,其中每个数据点都是数组中的一个元素(例如对象)

比如像这样,

{state: 'New York', value:{year_2000: 1000, year_2001: 20000}
var数据={
州:'纽约',
价值:{
2000年:1000,
2001年:20000
}
};
var newValue=[];
for(data.value中的var键){
push({year:key.split(“”)[1],value:data.value[key]})
};
data.value=newValue;

console.log(数据)
谢谢!这是有道理的。我创建了一个新数组来拆分和存储数据,就像您在这里看到的“newValue”一样。有没有办法检查数组中存储了什么?我使用了console.log(newValue[0]),但它返回的是未定义的。请在某个地方共享您的确切代码(如JSFIDLE),我会看一看。将数据推送到新数组后,它会显示空数组。是因为我的原始数据在一个数组中吗?它存储为[{},{}]您的数据现在是一个数组。您必须更改一些内容,首先是
forEach
。看看: