D3 Pie错误:<text>属性transform =“translate(NaN,NaN)”的值无效

时间:2015-11-09 11:36:20

标签: d3.js

继续收到控制台错误 错误:属性transform =“translate(NaN,NaN)”

的值无效

在此重新创建错误。 http://jsfiddle.net/9f9wonoc/

var width = 360;
var height = 360;
var radius = Math.min(width, height) / 2;
var color = {
'Pass': '#66B51B',
'Fail': '#d03324'
}

var data = [
{ label: 'Pass', count: 12 },
{ label: 'Fail', count: 10 },
];

var svg = d3.select('body')
.append('svg')
.attr('width', width)
.attr('height', height)
.append('g')
.attr('transform', 'translate(' + (width / 2) +  ',' + (height / 2) + ')');

var arc = d3.svg.arc()
.outerRadius(radius);

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

var path = svg.selectAll(".arc")
.data(pie(data))
.enter().append("g")
.attr("class", "arc");

path.append("path")
.attr("d", arc)
.style("fill", function(d) { return color[d.data.label]; });

path.append("text")
.attr("transform", function(d, i) {
return "translate(" + arc.centroid(d, i) + ")";
})
.attr("dy", ".35em")
.style("text-anchor", "middle")
.text(function(d) { return d.data.count; });

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你错过了一件小事:

您需要将内半径0设置如下:

var arc = d3.svg.arc()
.outerRadius(radius).innerRadius(0);

工作代码here

希望这有帮助!