如何使用d3将多个变量的数据输入到一个图表中?

时间:2016-10-08 08:38:04

标签: javascript d3.js svg

只要所有数据都在一个文件中或在一个变量中,就可以很容易地在d3中输入数据:

svg.selectAll("path").data(datavariable).enter()
    .append("path")
    ....

我需要将存储在单独变量中的数据输入到一个图表中。我试过了

svg.selectAll("path").data(datavariable1).enter()
    .append("path")
    ....
 svg.selectAll("path").data(datavariable2).enter()
    .append("path")
    ....

它似乎不起作用。我还尝试了svg.selectAll("path1")...svg.selectAll("path.datavariable1")...,但它只使用相同的数据(datavariable1)绘制了第一条路径。有谁知道如何从两个变量中获取数据同时在一个图上工作?

1 个答案:

答案 0 :(得分:0)

我在Nixie的评论的帮助下弄清楚了。这对我有用。对于我不需要svg.selectAll任何事情的路径。 line1line2从数据变量中获取数据:

var line1 = d3.line()
    .x(function(d,i) { return x(datavariable1[i].xvalue); })
    .y(function(d,i) { return y(datavariable1[i].yvalue); });

var line2 = d3.line()
    .x(function(d,i) { return x(datavariable2[i].xvalue); })
    .y(function(d,i) { return y(datavariable2[i].yvalue); });

然后我按如下方式添加SVG:

svg.append("path")
    .attr("class", "line")
    .attr("d", line1(datavariable1))


svg.append("path")
    .attr("class", "line")
    .attr("d", line2(datavariable2))

Nixie对我的问题的评论中的答案在我的案例中不起作用,因为path必须保留path的折线图,但它适用于点图。希望这有助于可能遇到类似问题的人。