使用 d3.js 绘制扇形旭日图
Drawing a sector of sunburst diagram using d3.js
我需要画这样的旭日图:
如您所见,这实际上是旭日图的一个扇区。我可以为主要 circle/arc 设置 startAngle 和 endAngle 吗?
编辑:
我的图是这样的:
https://bl.ocks.org/mbostock/4063423
你绝对可以把startAngle和endAngle设置成圆
查看朝阳图的代码片段。
var arc = d3.svg.arc()
.startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
.endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
.innerRadius(function(d) { return Math.max(0, d.y ? y(d.y) : d.y); })
.outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
这是您要找的吗?
这里是变化的部分:
var partition = d3.layout.partition()
.sort(null)
.size([Math.PI, radius * radius]) // Previoulsy : .size([2 * Math.PI, radius * radius])
.value(function(d) { return 1; });
var arc = d3.svg.arc()
.startAngle(function(d) { return d.x - Math.PI / 2; }) // Previously : .startAngle(function(d) { return d.x; })
.endAngle(function(d) { return d.x + d.dx - Math.PI / 2; }) // Previously : .endAngle(function(d) { return d.x + d.dx; })
.innerRadius(function(d) { return Math.sqrt(d.y); })
.outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
观看现场演示:JSFiddle
我需要画这样的旭日图:
如您所见,这实际上是旭日图的一个扇区。我可以为主要 circle/arc 设置 startAngle 和 endAngle 吗?
编辑:
我的图是这样的:
https://bl.ocks.org/mbostock/4063423
你绝对可以把startAngle和endAngle设置成圆
查看朝阳图的代码片段。
var arc = d3.svg.arc()
.startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
.endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
.innerRadius(function(d) { return Math.max(0, d.y ? y(d.y) : d.y); })
.outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
这是您要找的吗?
这里是变化的部分:
var partition = d3.layout.partition()
.sort(null)
.size([Math.PI, radius * radius]) // Previoulsy : .size([2 * Math.PI, radius * radius])
.value(function(d) { return 1; });
var arc = d3.svg.arc()
.startAngle(function(d) { return d.x - Math.PI / 2; }) // Previously : .startAngle(function(d) { return d.x; })
.endAngle(function(d) { return d.x + d.dx - Math.PI / 2; }) // Previously : .endAngle(function(d) { return d.x + d.dx; })
.innerRadius(function(d) { return Math.sqrt(d.y); })
.outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
观看现场演示:JSFiddle