2

我正在尝试在 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中做到这一点吗?如果是这样,我是否走在正确的道路上?谢谢

4

2 回答 2

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>

于 2017-05-24T19:56:34.123 回答
0

这个 Aster Plot对你有用吗?

于 2017-05-24T19:11:44.593 回答