canvas画饼状图
首先代码并不是原创。
然后,准备弄一个根据数据库创建图表的框架,所以自己现在网上学了一点,先做个饼状图来看看:
<scripttype="text/javascript"language="javascript">
//设置几个全局变量计数,概率名数组,概率大小数组,还有分类颜色数组
varDataNum=0;
vardata_arr=newArray();//
vartext_arr=newArray();
varcolor_arr=newArray();
varcolor_arr=["#00FF21","#FFAA00","#00AABB","#FF4400","#FF0000"];//颜色可以多弄几个但是我懒得弄
functionrun(){//执行画图方法
drawCircle("canvas_circle");
}
functiondrawCircle(canvasId){//画饼状图的方法
data_arr=newArray();
text_arr=newArray();//每次执行都要初始化数据
if(DataNum==0){
alert("无数据");
return;
}
else{
varj=parseFloat(0);
for(vari=0;i<DataNum;i++){//动态添加
data_arr[i]=document.getElementById("data_arr"+i).value;//数据
text_arr[i]=document.getElementById("text_arr"+i).value;//数据名称
j=parseFloat(j)+parseFloat(data_arr[i]);//相加的时候强制转换成浮点型,否知直接字符相加
}
if(j!=1){alert("输入比例不为1,请输入正确的比例");return;}
}
varc=document.getElementById(canvasId);//获取canvas对象
varctx=c.getContext("2d");
alert("ss");
ctx.clearRect(0,0,500,500);
varradius=c.height/2-20;//半径
varox=radius+20,oy=radius+20;//圆心
varwidth=30,height=10;//图例宽和高
varposX=ox*2+20,posY=30;//
vartextX=posX+width+5,textY=posY+10;
varstartAngle=0;//起始弧度
varendAngle=0;//结束弧度
for(vari=0;i<data_arr.length;i++)
{
//绘制饼图
endAngle=endAngle+data_arr[i]*Math.PI*2;//结束弧度
ctx.fillStyle=color_arr[i];//选择颜色
ctx.beginPath();
ctx.moveTo(ox,oy);//移动到到圆心
ctx.arc(ox,oy,radius,startAngle,endAngle,false);
ctx.closePath();
ctx.fill();
startAngle=endAngle;//设置起始弧度
//绘制比例图及文字
ctx.fillStyle=color_arr[i];
ctx.fillRect(posX,posY+20*i,width,height);
ctx.moveTo(posX,posY+20*i);
ctx.font='bold12px微软雅黑';//斜体30像素微软雅黑字体
ctx.fillStyle=color_arr[i];//"#000000";
varpercent=text_arr[i]+":"+100*data_arr[i]+"%";
ctx.fillText(percent,textX,textY+20*i);
}
}
functionadd(){//添加数据
varnew1=dataInput.insertRow();
varnew11=new1.insertCell();
varnew12=new1.insertCell();
new11.innerHTML="数据名:<inputtype='text'size='10'id='text_arr"+DataNum+"'/>";
new12.innerHTML="百分比:<inputtype='text'size='10'id='data_arr"+DataNum+"'/>";
DataNum++;
}
//页面加载时执行init()函数
//window.onload=init;
</script>
就这些,先记着,也许以后有用。
下面是HTML5代码
<canvasid="canvas_circle"width="500"height="300">
浏览器不支持canvas
</canvas>