D3.js 用一组对象绘制D3折线图

D3.js 用一组对象绘制D3折线图,d3.js,D3.js,我正在尝试使用D3.js创建一个折线图,但我很困惑。我已经跟踪了,但我不知道如何将数据输入图表 以下是我的数据: [ { name : "SomeKey", timestamp : "2013-05-07T12:00:00.052Z", value : "1" } { name : "SomeKey", timestamp : "2013-05-07T12:10:00.052Z", value : "4" } { name : "SomeKey", timestamp :

我正在尝试使用D3.js创建一个折线图,但我很困惑。我已经跟踪了,但我不知道如何将数据输入图表

以下是我的数据:

[
    { name : "SomeKey", timestamp : "2013-05-07T12:00:00.052Z", value : "1" }
    { name : "SomeKey", timestamp : "2013-05-07T12:10:00.052Z", value : "4" }
    { name : "SomeKey", timestamp : "2013-05-07T12:40:00.052Z", value : "2" }
    { name : "SomeKey", timestamp : "2013-05-07T12:41:00.052Z", value : "2" }
    { name : "SomeKey", timestamp : "2013-05-07T12:44:00.052Z", value : "2" }
    ... etc. there can be loads of objects in this array
]
如前所述,数组中可以有任意数量的对象,
name
键始终为数组保留相同的值,我需要的是x轴上的时间戳,该值是绘制图表的值,但我无法完全理解


我看了一些其他问题,可能与本文中的问题类似,但对我来说,不同之处在于每个对象只有一个值。

您需要进行一些更改,以指定对象中您希望数据基于的属性(在您的情况下为“值”)

首先得到最大Y

maxY = d3.max(data, function (d) {
    return d.value;
});
您希望修改教程中的这一行,并将d3.max(数据)替换为maxY

y = d3.scale.linear().domain([0, d3.max(data)]).range([0 + margin, h - margin])
然后您还需要修改此代码以指定您的值

var line = d3.svg.line()
   .x(function(d,i) { return x(i); })
   .y(function(d) { return -1 * y(d.value); })

我不得不说,这个教程看起来不是特别清晰或者写得不好,而且对于你想要做的事情来说,它还不够。您需要在x轴上使用时间格式。遵循