D3将数据添加到3D饼图

时间:2014-11-19 14:38:17

标签: javascript d3.js

以下是我在here找到的D3示例中的js代码。

var MsaSubGroup  = svg.append("g").attr("id","MsaSubGroupData").attr("class","pieChart");
Donut3D.draw("MsaSubGroupData", getData(MSA), 450, 150, 130, 100, 30, 0.4);

var wedges = MsaSubGroup.selectAll("g.slices").data(datum).enter();
        wedges.on("mousemove", function(d){ //This is what the browser is complaining about.
            mousex = d3.mouse(this);
            mousex = mousex[0];
            //console.log(d);
            d3.select(this)
                .classed("hover", true);

            tooltip.html(d.label+": " + d.value).style("visibility", "visible").style("left", mousex + "px" );
        });

我做了一些修改,尝试添加数据和工具提示。事实上我很需要将数据绑定到svg。但是,我在控制台中遇到了奇怪的错误:

  

未捕获的TypeError:undefined不是函数

究竟什么是未定义的?当我在console.log(datum)中,我可以看到返回的对象数组,那么我做错了什么?

非常感谢。

1 个答案:

答案 0 :(得分:1)

wedgesenter()来电的结果:

  

仅定义appendinsertselectcall运算符

所以它没有任何on方法,这就是导致&#34; undefined不是函数&#34; 错误的原因。< / p>

我假设你想要:

var wedges = MsaSubGroup
        .selectAll("g.slices")
        .on('mousemove', ...);

wedges.data(myData).enter()...

var wedges = MsaSubGroup
        .selectAll("g.slices")
        .data(myData)
        .enter()
        .append('g')
        .on('mousemove', ...);