Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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_Svg_D3.js - Fatal编程技术网

Javascript 将参数传递给d3.svg.line变量

Javascript 将参数传递给d3.svg.line变量,javascript,svg,d3.js,Javascript,Svg,D3.js,我使用的是d3js v3,我试图通过调用带有参数的line函数来创建一个迷你图。当我这样做时: .attr("d", line) 我在svg路径元素中获得了一个d属性。但当我这样做的时候: .attr("d", function(d){line(d);}) d属性不会添加到dom中。我尝试将变量重命名为脚本中其他地方未使用的变量。这没有帮助 我的线路功能如下: var line = d3.svg.line() .x(function (d) { return x(d.

我使用的是d3js v3,我试图通过调用带有参数的line函数来创建一个迷你图。当我这样做时:

.attr("d", line)
我在svg路径元素中获得了一个d属性。但当我这样做的时候:

.attr("d", function(d){line(d);})
d属性不会添加到dom中。我尝试将变量重命名为脚本中其他地方未使用的变量。这没有帮助

我的线路功能如下:

var line = d3.svg.line()
    .x(function (d) {
        return x(d.t);
    })
    .y(function (d) {
        return d.v * -20;
    })
    .interpolate("basis")
;
我的x和xAxis函数如下所示:

var x = d3.time.scale().range([0, width]).domain([t0, t1]).nice(),
    xAxis = d3.svg.axis().scale(x).tickFormat(customTimeFormat)
;
对于y,我有:

var y = d3.scale.ordinal()
    .domain(["","A", "B", "C", "D", "E", "F", "G", "H", "I"])
    .range([0,-20,-40,-60,-80,-100,-120,-140,-160,-180])
;

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
;
如果我添加日志语句,我可以看到所有函数都按预期调用,甚至当我将第(d)行的输出记录到控制台时,我也可以看到完整的“d”属性,它应该是这样的,但它不会在dom中结束

我做错了什么?

当您这样做时:

.attr("d", line)
.attr("d", function(d){line(d);})
您正在将
作为函数引用传入,函数引用将作为回调调用,并将
d
作为参数传入。此函数的返回值将分配给属性

执行此操作时:

.attr("d", line)
.attr("d", function(d){line(d);})
您正在将新定义的函数作为引用传入,该引用将作为回调调用,如上所述。该函数的返回值将分配给属性。由于您的函数正在调用第(d)行本身,因此需要从函数返回其返回值:

.attr("d", function(d) { return line(d); })