D3.js 用一组对象绘制D3折线图
我正在尝试使用D3.js创建一个折线图,但我很困惑。我已经跟踪了,但我不知道如何将数据输入图表 以下是我的数据: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 :
[
{ 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轴上使用时间格式。遵循