Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据传递给d3.svg.line()_Javascript_D3.js - Fatal编程技术网

Javascript 将数据传递给d3.svg.line()

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); })

因此,我有一个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); })
             .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] }; 
});