近来比较忙,有点无暇顾忌小站了!于是忙里偷闲,把项目中的收获记录下来,方便他人,提升自己!
饼图
饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到。如cnzz的统计饼图
从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆。
都使用什么方法实现
目前众多站点制作饼图大多使用Flash,或者服务器端生成,如C++、PHP、Python、Java等等,只要安装相应的基础库就能实现画图。但很少有站点这么干,因为耗费服务器资源。
cnzz里使用的就是Flash
PHP生成的
Canvas也能画出饼图
HTML
<canvas id="pie" width="224" height="130" ></canvas>
JavaScript
// 画饼图所用的颜色
var color = ["#999999", "#333333", "#336799"];
// 数据百分比,全部是数据加起来是100,才能画满整个圆
var data = [25, 35, 50];
function drawCircle(){
var canvas = document.getElementById("pie");
// 画2D平面图
var ctx = canvas.getContext("2d");
// 绘制方向起点,有逆顺之分,通常是 1.5*Math.PI 或者 0
var startPoint= 1.5 * Math.PI;
for (var i=0; i<data.length; i++) {
// 设置填充颜色
ctx.fillStyle = color[i];
// 设置边框颜色
ctx.strokeStyle = color[i];
// 开始画
ctx.beginPath();
// 移动画笔
ctx.moveTo(112, 65);
// 画扇形函数
ctx.arc(112, 65, 65, startPoint, startPoint - Math.PI * 2 * (data[i] / 100), true);
// 填充颜色
ctx.fill();
// 绘制边框
ctx.stroke();
// 画完一个扇形以后,重新计算回到原点开始绘制下一扇,否则画出来的饼图拼起来就不是圆形了。
startPoint -= Math.PI * 2 * (data[i] / 100);
}
}
drawCircle();
Canvas是HTML5新增的画布标签,个人感觉这个标签在将来将大有用途,喜欢研究HTML5的童鞋可以深入研究这个标签
效果: