JavaScript
var labels = ["Unknown","Oracle Corporation","ASUSTeK COMPUTER INC.","NVIDIA Corporation","Conduit","Google","Conduit Ltd.","Adobe Systems Incorporated","Citrix Systems, Inc.","Elaborate Bytes AG", "Test", "RealNetworks, Inc."];
var data = [168.58627289999998, 369.1733422499999, 11.629962644232126, 0,6.693271,0,0, 137.65407624538355, 0,4.1210934976853135,25.88816131828518, 0,0, 161.8076961547985,0,0,64.30386096666666,0,0, 34.71585812382221,0,7.301610919743407,0,0,13.226308424131263,0,0,0, 11.4285714,0,0,5.094964976938216,0,0,7.121814964097166,0];
var margin = { top: 40, right: 20, bottom: 20, left: 20 };
var innerRadius = 20;
$(window).resize(draw);
function draw() {
var height = Math.min($('svg').height(), $('svg').width()),
usableHeight = (((height - (margin.top + margin.bottom)) / 2) - innerRadius),
numSegments = 3,
segmentHeight,
offset,
labelStart = 0.01,
svg,
mainGroup,
wedges,
labelGroup,
ir = function (d, i) {
return innerRadius + Math.floor(i / numSegments) * segmentHeight;
},
or = function (d, i) {
return innerRadius + segmentHeight + Math.floor(i / numSegments) * segmentHeight;
},
sa = function (d, i) {
return (i * 2 * Math.PI) / numSegments;
},
ea = function (d, i) {
return ((i + 1) * 2 * Math.PI) / numSegments;
};
svg = d3.select('svg');
segmentHeight = Math.floor(Math.max(usableHeight, 100) / labels.length)
offset = innerRadius + labels.length * segmentHeight;
mainGroup = svg.select("g.circular");
mainGroup.attr("transform", "translate(" + parseInt(margin.left + offset, 10) + "," + parseInt(margin.top + offset, 10) + ")");
var wedges = mainGroup.selectAll("path").data(data);
wedges.attr("d", d3.svg.arc().innerRadius(ir).outerRadius(or).startAngle(sa).endAngle(ea));
wedges.enter().append("path")
...