Javascript 将数据传递给d3.svg.line()
因此,我有一个Javascript对象,如:-Javascript 将数据传递给d3.svg.line(),javascript,d3.js,Javascript,D3.js,因此,我有一个Javascript对象,如:- Object{data:Array[39],time:Array[39]} object.data是一个值数组,object.time是一个javascript日期对象数组 我想在D3里画一个折线图。我的代码的相关部分: // Line function var line = d3.svg.line() .x(function(d,i) { return x(d.time); })
Object{data:Array[39],time:Array[39]}
object.data是一个值数组,object.time是一个javascript日期对象数组
我想在D3里画一个折线图。我的代码的相关部分:
// Line function
var line = d3.svg.line()
.x(function(d,i) { return x(d.time); })
.y(function(d,i) { return y(d.data); });
// Draw Line
svg.append("path")
.datum([data])
.attr("class", "line")
.attr("d", line);
轴与数据的位置相同,但线没有显示出来。我猜我没有像应该的那样将值返回给line函数的x和y访问器。有什么建议吗
编辑:
整个路径是一个单独的SVG元素,因此您可以将整个数据与点值一起传递给它。您的数据确实不是
行
友好格式,您需要在d3.SVG.line
可以解释它之前对其进行转置
var lineData = data.time.map(function (_, idx) {
return { data: data.data[idx], time: data.time[idx] };
});
谢谢不过,似乎仍然存在一个解析错误,
error:Problem parsing d=“MNaN,NaN”
@ArvindRavi需要更彻底的调查:您的量表的域和范围是什么?时间安排得好吗?是否有任何数据点NaN
,等等@ArvindRavi根据您更新的代码,最后的问题似乎是您将数据数组嵌套在另一个数组中,在命令svg.append(“path”).datum([data])
中。如果使用.data()
进行数据联接,则需要包装器数组,因为.data
需要一个数据对象数组,每个DOM元素一个。但是.datum()
只需要一个数据对象,该数据对象将全部分配给选择中的每个元素。因此,请尝试一下svg.append(“path”).datum(data)@AmeliaBR,这就成功了,同时还提供了音乐方面的答案。谢谢你们两位!
svg.append("path")
.attr("class","line")
.attr("d",line(object));
var lineData = data.time.map(function (_, idx) {
return { data: data.data[idx], time: data.time[idx] };
});