在D3中生成饼图时面临问题

时间:2016-01-09 14:50:00

标签: d3.js

我正在尝试从外部数据生成d3中的饼图,我在下面的代码中找不到错误,因为它没有抛出任何错误。

这是我的代码

    //file path is correct  
    d3.json("errortable12.json", function(data){

    //var obj = JSON.parse(data);
    var r= 300; 
    var color =d3.scale.ordinal()
                .range(["red","blue","orange"])
    console.log(data);

    var canvas = d3.select("body").append("svg")
                    .attr("width",1500)
                    .attr("height",1500);

    var group = canvas.append("g")
                    .attr("transform","translate(300,300)");

    var arc = d3.svg.arc()
                .innerRadius(200)
                .outerRadius(r);

    var pie = d3.layout.pie()
                .value(function(d) { return d.age});

    var arcs = group.selectAll(".arc")
                    .data(pie(data))
                    .enter()
                        .append("g")
                        .attr("class","arc");

    arcs.append("path")
        .attr("d.age",arc);

    arcs.append("path")
        .attr("d.age",arc)
        .attr("fill",function(d){return color(d.data);});

1 个答案:

答案 0 :(得分:1)

两个问题。首先," d.age"不是SVG属性,只需使用" d"。此外,无需追加两个路径,只需调用一次。其次,将d.data传递给颜色无效,只需使用i

arcs.append("path")
    .attr("d.age",arc); //<-- d.age is not a valid SVG attribute

arcs.append("path")
    .attr("d.age",arc) //<-- why repeat this twice?
    .attr("fill",function(d){return color(d.data);});

应该是:

     arcs.append("path")
       .attr("d", arc)
       .attr("fill", function(d,i) {
          // return color(d.data);
          return color(i); //<-- just use i
     });

完整代码here