你能在d3中创建一个不同切片大小的饼图吗?

时间:2017-05-24 19:02:42

标签: javascript d3.js wolfram-language

我正试图在d3(https://reference.wolfram.com/language/ref/Files/SectorChart.en/O_5.png)中制作类似Wolfram的SectorChart。我目前正在使用

的基本数据集
[ { label:0, radius:1 }, { label:1, radius:1 }, { label:2, radius:2 }];

我试图用以下函数改变弧的外半径

var arc = d3.arc()
      .innerRadius(0)
      .outerRadius(function(d) { return d.radius * 100; })

但这不起作用。甚至可以在d3中这样做吗?如果是这样,我是否走在正确的道路上?感谢

2 个答案:

答案 0 :(得分:1)

是的,你可以

您缺少的是,您无法直接访问d.radius,因为饼图布局应用于数据,将旧数据包装到data属性,因此您的代码应该是像这样

var arc = d3.arc()
      .innerRadius(0)
      .outerRadius(function(d) { return d.data.radius * 100; })

拨弄



var arc = d3.svg.arc()
  .innerRadius(0)
  .outerRadius(function (d,i) { 
      return d.data.radius*100
  });
  
  
  var pie = d3.layout.pie()
    .sort(null)
    .value(function(d) { return d.radius; });
    
 var svg =  d3.select('#result').append('svg').attr('width',500).attr('height',500)
 
 svg.selectAll('path')
    .data(pie([{ label:0, radius:1 }, { label:1, radius:1 }, { label:2, radius:2 }]))
    .enter()
    .append('path')
    .attr('d',arc)
    .attr('transform','translate(250,250)')
    .attr('fill','yellow')
    .attr('stroke','black')

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div id='result'>

</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

this Aster Plot会为你效力吗?