1 var width = 800; 2 var height = 600; 3
4 var svg = d3.select("#body") 5 .append("svg") 6 .attr("width",width) 7 .attr("height",height) 8
9 //定義一個對象
10 var dataList = {startAngle:0,endAngle:Math.PI * 0.75}; 11
12 //建立一個弧生成器
13 var arcPath = d3.svg.arc() 14 .innerRadius(50) 15 .outerRadius(100) 16 //添加路徑
17 svg.append("path") 18 .attr("d",arcPath(dataList)) 19 .attr("transform","translate(250,200)") 20 .attr("stroke","black") 21 .attr("stroke-width","3px") 22 .attr("fill","yellow")
1 //定義一個對象
2 var dataList = [ 3 {startAngle : 0 , endAngle : Math.PI * 0.6}, 4 {startAngle : Math.PI * 0.6 , endAngle : Math.PI}, 5 {startAngle : Math.PI , endAngle : Math.PI * 1.7}, 6 {startAngle : Math.PI * 1.7 , endAngle : Math.PI * 2} 7 ]
1 //建立一個弧生成器
2 var arcPath = d3.svg.arc() 3 .innerRadius(0) 4 .outerRadius(100) 5
6 //定義顏色
7 var color = d3.scale.category10(); 8
9
10 //插入足夠數量的路徑元素<path>,分別用弧生成器計算路徑
11 svg.selectAll("path") 12 .data(dataList) 13 .enter() 14 .append("path") 15 .attr("d",function(d){return arcPath(d)}) 16 .attr("transform","translate(250,250)") 17 .attr("stroke","black") 18 .attr("stroke-width","3px") 19 .attr("fill",function(d,i){return color(i)})
1 svg.selectAll("text") 2 .data(dataList) 3 .enter() 4 .append("text") 5 .attr("transform",function(d){ 6 return "translate(250,250)"+"translate("+arcPath.centroid(d)+")" //計算弧的中心位置
7 }) 8 .attr("text-anchor","middle") 9 .attr("fill","white") 10 .attr("font-size","18px") 11 .text(function(d){ 12 return Math.floor((d.endAngle - d.startAngle)*180/Math.PI)+"°"
13 })