Javascript 将参数传递给d3.svg.line变量
我使用的是d3js v3,我试图通过调用带有参数的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.
.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); })