2015-08-28 56 views
0

jsfiddle作品上的数据格式饼图创建饼图:D3 +创建不同格式的

var data = [ { label: 'mylabel1', value: '1342' }, 
    { label: 'mylabel2', value: '1505' } ] 

我如何得到它在这fiddle这种格式数据的运行?

data=[{ country: 'Australia', 
      lat: '-25.274398', 
      lng: '133.775136', 
     values: 
       [ { label: 'ham', value: '1342' }, 
       { label: 'kpr', value: '1505' } ] 
     }] 

这是我认为我必须要改变,但我只是不太有它的行:

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

我必须得到它在新的数值数组上工作数据对象。

我所有的代码从第2的jsfiddle:

var w = 400; 
var h = 400; 
var r = h/2; 
var color = d3.scale.category20c(); 

var data = [{"label":"Category A", "value":20}, 
        {"label":"Category B", "value":50}, 
        {"label":"Category C", "value":30}]; 

var data = [ { label: 'mylabel1', value: '1342' }, 
    { label: 'mylabel2', value: '1505' } ] 

    data=[{ country: 'Australia', 
       lat: '-25.274398', 
       lng: '133.775136', 
      values: 
        [ { label: 'ham', value: '1342' }, 
        { label: 'kpr', value: '1505' } ] 
      }] 


var vis = d3.select('#chart').append("svg:svg").data([data]).attr("width", w).attr("height", h).append("svg:g").attr("transform", "translate(" + r + "," + r + ")"); 
var pie = d3.layout.pie().value(function(d){return d.value;}); 

// declare an arc generator function 
var arc = d3.svg.arc().outerRadius(r); 

// select paths, use arc generator to draw 
var arcs = vis.selectAll("g.slice").data(pie).enter().append("svg:g").attr("class", "slice"); 
arcs.append("svg:path") 
    .attr("fill", function(d, i){ 
     return color(i); 
    }) 
    .attr("d", function (d) { 
     // log the result of the arc generator to show how cool it is :) 
     console.log(arc(d)); 
     return arc(d); 
    }); 

// add the text 
arcs.append("svg:text").attr("transform", function(d){ 
      d.innerRadius = 0; 
      d.outerRadius = r; 
    return "translate(" + arc.centroid(d) + ")";}).attr("text-anchor", "middle").text(function(d, i) { 
    return data[i].label;} 
     ); 

回答

0

你必须改变你通过数据连接的数据。在这种情况下,它的values阵列的数据:

var vis = d3.select('#chart').append("svg:svg").data([data[0].values])

也,调整标签绘制到这个新的数据格式,您需要更改return data[i].label;return d.data.label;

更新jsFiddle