小编win*_*ter的帖子

在D3.js中绘制多条线

到目前为止,我一直在使用循环来为D3可视化添加线元素,但这似乎并不符合API的精神.

假设我有一些数据,

var data = {time: 1, value: 2, value2: 5, value3: 3,value4: 2},
           {time: 2, value: 4, value2: 9, value3: 2,value4: 4},
           {time: 3, value: 8, value2:12, value3: 2,value4:15}]);
Run Code Online (Sandbox Code Playgroud)

我想要四行,时间作为所有4的X.

我可以这样做:

var l = d3.svg.line()
        .x(function(d){return xScale(d[keys[0]]);})
        .y(function(d,i){
            return yScale(d[keys[1]]);})
        .interpolate("basis");
var l2 = d3.svg.line()
        .x(function(d){return xScale(d[keys[0]]);})
        .y(function(d,i){
            return yScale(d[keys[2]]);})
        .interpolate("basis");
var l3 = d3.svg.line()
        .x(function(d){return xScale(d[keys[0]]);})
        .y(function(d,i){
            return yScale(d[keys[3]]);})
        .interpolate("basis");  
var l4 = d3.svg.line()
        .x(function(d){return xScale(d[keys[0]]);})
        .y(function(d,i){
            return yScale(d[keys[4]]);})
        .interpolate("basis");
Run Code Online (Sandbox Code Playgroud)

然后逐个添加(或循环).

var line1 = group.selectAll("path.path1")
        .attr("d",l(data));
var line2 …
Run Code Online (Sandbox Code Playgroud)

line d3.js

39
推荐指数
1
解决办法
3万
查看次数

标签 统计

d3.js ×1

line ×1