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
。看看: