我需要绘制一个适用于 IE 8 的饼图,所以我使用的是 d34raphael。
目前这是我的代码,它是从 d3 饼图示例https://raw.github.com/mbostock/d3/master/examples/pie/pie.html修改的
var width = 300,
height = 300,
outerRadius = Math.min(width, height) / 2,
innerRadius = outerRadius * .6,
data = d3.range(10).map(Math.random),
color = d3.scale.category20(),
donut = d3.layout.pie(),
arc = d3.svg.arc().innerRadius(innerRadius).outerRadius(outerRadius);
// #chart is a div
var paper = new Raphael($('#chart')[0], width, height);
var svg = d3.raphael(paper);
paper.setStart();
var vis = svg.selectAll('rect')
.data([data])
.enter().append('rect')
.attr('x', 0)
.attr('y', 0)
.attr('width', width)
.attr('height', height);
svg.selectAll('path')
.data(donut)
.enter().append('path')
.attr('fill', function(d, i) { return color(i); })
.attr('d', arc)
.attr('transform', 'translate(' + outerRadius + ',' + outerRadius + ')');
paper.setFinish().transform(['t', 0, 0]);
当我将甜甜圈传递给数据函数时它崩溃了,d3 的数据函数内的绑定函数有一个group
参数。单步执行数据函数后,我发现它group
是未定义的。(对我来说,它在 d3.v2.js:4997 上崩溃bind(group = this[i], value.call(group, group.parentNode.__data__, i));
,它试图parentNode
在 undefined上引用group
)我认为这可能与 raphael 不支持 g 标签有关。关于如何将 d3 pie 布局与 d34raphael 一起使用的任何想法?谢谢