我需要帮助为我使用raphael.js修改的圆环图脚本添加标记.除了动态生成三角形标记的方法外,我已经准备好了大部分内容.
JSFiddle:http://jsfiddle.net/aP7MK/73/
function donutChart(total,goal,avg){ var paper = Raphael("canvas",400,400); paper.customAttributes.arc = function (xloc,yloc,value,total,R) { var alpha = 360 / total * value,a = (90 - alpha) * Math.PI / 180,x = xloc + R * Math.cos(a),y = yloc - R * Math.sin(a),path; if (total == value) { path = [ ["M",xloc,yloc - R],["A",R,1,xloc - 0.01,yloc - R] ]; } else { path = [ ["M",+(alpha > 180),x,y] ]; } return { path: path }; }; var backCircle = paper.circle(100,100,40).attr({ "stroke": "#7BC2E5","stroke-width": 14 }); var theArc = paper.path().attr({ "stroke": "#f5f5f5","stroke-width": 14,arc: [100,40] }); //event fired on each animation frame eve.on("raphael.anim.frame.*",onAnimate); //text in the middle theText = paper.text(100,"0%").attr({ "font-size": 18,"fill": "#f5f5f5","font-weight": "bold" }); //the animated arc theArc.rotate(0,100).animate({ arc: [100,((total/goal) * 100),40] },1900); //on each animation frame we change the text in the middle function onAnimate() { var howMuch = theArc.attr("arc"); theText.attr("text",Math.floor(howMuch[2]) + "%"); } } donutChart(80,140,40);
这是我最终要创建的内容: