SVG追加会导致D3 JavaScript

时间:2015-07-03 15:14:05

标签: javascript d3.js svg

我试图在图表上绘制轴但是当我使用以下行附加带有g的svg时,我收到错误TypeError: d.join is not a function

svg.append("g")
        .attr("transform", "translate(0," + height / 2 + ")")
        .call(xAxis);

svg.append("g")
        .attr("transform", "translate(" + width / 2 + ",0)")
        .call(yAxis);

但是,当我删除这些行时,错误消失。关于如何解决这个问题的任何想法?这是DEMO

谢谢!

1 个答案:

答案 0 :(得分:3)

此行导致问题:

var path = svg.selectAll("path");

这是选择svg的所有path元素。添加轴时,它们还包含正在选择的路径元素,但不是 voronoi的一部分。解决方案是使这个选择器更具体:

var path = svg.selectAll(".step"); //<-- select by class "step" 

function redraw() {
    var d = [];
    for (var i = 0; i < k; i++) {
        d.push([X(x_means[i]), Y(y_means[i])]);
    }
    var vd = voronoi(d);
    var v = path
            .data(vd, polygon);

    v.exit().remove();

    v.enter()
            .append("path")
            .attr('class','step'); //<-- when you add a voroni path give it that class

更新了示例here