Javascript 使用泛型函数绘制线d3js

Javascript 使用泛型函数绘制线d3js,javascript,d3.js,Javascript,D3.js,我正在使用d3js绘制多行图表 我画线的功能如下 meanLine = d3.svg.line() .interpolate('linear') .x(function (d) { return xScale(d.date); }) .y(function (d) { return yScale(d.mean);

我正在使用d3js绘制多行图表

我画线的功能如下

meanLine = d3.svg.line()
            .interpolate('linear')
            .x(function (d) {
                return xScale(d.date);
            })
            .y(function (d) {
                return yScale(d.mean);
            });

//data is declared at top
group.append('svg:path')
            .attr({
                d: meanLine(data),
                "stroke": "rgba(" + color + ", 0.8)",
            });
这里日期和平均值是硬编码的。我想要一个通用函数,我可以传递用于绘制直线的值

我想要像这样的东西

lineFunc = d3.svg.line()
            .interpolate('linear')
            .x(function (d, xval) {
                return xScale(d[xval]);
            })
            .y(function (d, yval) {
                return yScale(d[yval]);
            });

//data is declared at top
group.append('svg:path')
            .attr({
                d: lineFunc(data, xval, yval),
                "stroke": "rgba(" + color + ", 0.8)",
            });

你可以这样做。。。在这里
myLineFun
包含您的
d3行函数

//make a function which houses the line function
var myLineFun = function(data, xval, yval){
        //the line function
        var lineFunc = d3.svg.line()
            .interpolate('linear')
            .x(function (d) {
                return xScale(d[xval]);//xval passed in the argument
            })
            .y(function (d) {
                return yScale(d[yval]);//yval passed in the argument
            });
        return lineFunc(data);//this will return the d attribute
}
然后称之为:

group.append('svg:path')
            .attr({
                d: myLineFun(data, xval, yval),
                "stroke": "rgba(" + color + ", 0.8)",
            });
希望这有帮助