你能在 d3 中创建一个具有不同切片大小的饼图吗?
Can you create a pie chart with varying slice sizes in d3?
我正在尝试在 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 中执行此操作吗?如果是这样,我走在正确的道路上吗?谢谢
this Aster Plot对你有用吗?
是的,你可以
你缺少的是,你不能直接访问 d.radius
因为饼图布局应用于数据,它将旧数据包装到 data
属性,所以你的代码应该是这样的
var arc = d3.arc()
.innerRadius(0)
.outerRadius(function(d) { return d.data.radius * 100; })
fiddle
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>
我正在尝试在 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 中执行此操作吗?如果是这样,我走在正确的道路上吗?谢谢
this Aster Plot对你有用吗?
是的,你可以
你缺少的是,你不能直接访问 d.radius
因为饼图布局应用于数据,它将旧数据包装到 data
属性,所以你的代码应该是这样的
var arc = d3.arc()
.innerRadius(0)
.outerRadius(function(d) { return d.data.radius * 100; })
fiddle
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>