我使用 nvd3 创建了一个多折线图,但无法以某些重要方式对其进行修改。我想使用直接的 d3js 来推出自己的产品,但我正在努力思考 joins。
我需要为每个路径创建一个d.key
对应的路径d.values
。
我的数据为 nvd3 格式化如下(删节)。
[
{
"key":"brw-a",
"values":[
["2012-07-11T00:00:00", 0.0 ],
["2012-07-11T23:59:59", 0.0 ],
["2012-07-05T06:31:47", 0.0 ],
["2012-07-05T23:59:59", 0.0 ]
]
},
{
"key":"brw-c",
"values":[
["2012-07-11T00:00:00", 0.0 ],
["2012-07-07T00:00:00", 2.0 ],
["2012-07-05T23:59:59", 4.0 ]
]
}
]
我似乎需要一个内部循环来访问存储在每个d.values
. 我有一个工作示例,它演示了如何d.values
在一大堆无用中出现。
var p = d3.select("body").selectAll("p")
.data(data)
.enter().append("p")
.text(function(d) {return d.key +": " + '[' + d.values + ']'})
我觉得我很接近了,这与以下内容有关:
.data(data, function(d) { return d.key; })
更新:我能够手动循环数据以创建所需的效果。也许没有办法通过连接来做到这一点?当然,除了使用美妙的 nvd3 库之外。请参阅下面的评论以获取链接。
var body = d3.select("body")
for (i=0; i < data.length; i++) {
var key = data[i].key
var values = data[i].values
body.append("h3")
.text(key)
for (j=0; j < values.length; j++) {
body.append("p")
.text(values[j][0] + " -- " + values[j][1])
}
}