我在使用 D3 时遇到了一些问题,而且我已经束手无策了。本质上,我有一个带有任意多行的时间序列图,并且为了方便起见,不能事先修改源数据(但它可以在客户端进行操作)。
数据是这样格式化的(带有任意多个标签):
object = [
{
"_id": "2012-08-01T05:00:00",
"value": {
"label1": 1.1208746110529344,
"label2": 0.00977592175310571
}
},
{
"_id": "2012-08-15T05:00:00",
"value": {
"label1": 0.7218920737863477,
"label2": 0.6250727456677252
},
....
我试过类似的东西:
var vis = d3.select.(element)
.append("svg:svg")
.attr("width", width)
.attr("height", height)
.append("svg:g");
var line = d3.svg.line()
.x(function(data) {return x(new Date(data._id));})
.y(function(data) {return y(data.value);});
vis.append("svg:path")
.attr("d", line(object))
.attr("stroke", "black");
这似乎无法通过 y 访问器访问正确的值,因为我收到“错误:解析问题”和很多“NaNL3.384615384615385,NaNL6.76923076923077,NaNL10.153846153846155”。但是,如果我通过以下方式对标签值进行硬编码:
.y(function(data) {return y(data.value.label1);});
它工作得很好,但只适用于一行。有人可以提供帮助吗?