1. [图片] lxdpie.jpg


​2. [文件] lqdpie.html ~ 801B     下载(7)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ru">
<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 
<script type="text/javascript" src="pie.js"></script>
</head>
<body>
   
    <fieldset style='position:relative;width:500px;height:400px;'>
            <legend> 刘强东吃饼</legend>
            <canvas id="p" width="500" height="400"   >Your browser does not support the HTML5 canvas tag.</canvas>
        </fieldset>
 
 
<script>
 
var config = {
    id: 'p',
    type: '%',
 
    data: [
['刘强东',18.4],['老虎基金',22.1],['HHGL',15.8],['DST',11.2],['BAI',9.5],['Fortune ising',5.3],['Kingdom',5.0],['红杉资本',2.0],
 
 ]
};
var p= pie(config);
    p.render();
 
</script>
 
 
</body>
</html>
3. [文件] pie.js ~ 3KB     
(function() {
    var Pie = (function() {
     
        var F = function(conf) {
                this.type=null;
                this.id=null;
                this.total=0;
                this.container=null;
                this.data=[];
                this.init(conf);
                return this;
            };
        F.prototype = {
            defaultBgcolor: ['deeppink', 'mediumslateblue', 'chartreuse', 'goldenrod', "#ffff00", "#2F368F", "#F6A25D", "#2CA8E0", "#77D1F6", '#181818', '#45AB35', "#336699", "#5fD1F6"],
 
            init: function(options) {
                for (var p in options) {
                    this[p] = options[p];
                }
                this.container = document.getElementById(this.id);
            },
            percentize: function() {
 
                if (this.type && this.type == '%') {
                    var sum = 0;
                    for (var i = 0; i < this.data.length; i++) {
                        sum += this.data[i][1];
                        if (this.data[i + 1] && (sum + this.data[i + 1][1]) > 100) {
                            break;
                        }
                    }
                    if (i != this.data.length) {
                        this.data = this.data.splice(0, i + 1);
                    }
                    if (sum != 100) {
                        this.data.push(['?', Math.ceil(100 - sum), '#282828']);
                    }
                } else {
                    var sum = 0;
 
                    for (var i = 0; i < this.data.length; i++) {
                        sum += this.data[i][1];
                    }
                    if (0 == this.total) {
                        this.total = sum;
                    }
                    
                    if (this.total - sum > 0) {
 
                        this.data.push(['?', this.total - sum, '#282828']);
                    }http://www.enterdesk.com/special/shouhui/​
 
                    for (var i = 0; i < this.data.length; i++) {
                        this.data[i][1] = Math.round((this.data[i][1] / this.total) * 100);
                    }手绘图片
                    
                }
  
 
            },
            renderPie: function() {
                var x = this.container.clientWidth * .33;
                var y = this.container.clientHeight * .5;
                var radius = (x > y) ? y : x;
                var ctx = this.container.getContext("2d");
                var startPoint = 0;
                for (var i = 0; i < this.data.length; i++) {
                    if (null == this.data[i][2]) {
                        this.data[i][2] = this.defaultBgcolor[i % this.defaultBgcolor.length];
                    }
                    ctx.fillStyle = this.data[i][2];
                    ctx.beginPath();
                    ctx.moveTo(x, y);
                    ctx.arc(x, y, radius, startPoint, startPoint + Math.PI * 2 * (this.data[i][1] / 100), false);
                    ctx.fill();
                    startPoint += Math.PI * 2 * (this.data[i][1] / 100);
                }
                return true;
            },
            renderLabel: function() {
                var table = ['<table  >'];
                for (var i = 0; i < this.data.length; i++) {
                    table.push('<tr><td bgcolor="');
                    table.push(this.data[i][2]);
                    table.push('">&nbsp;&nbsp;</td><td>');
                    table.push(this.data[i][0]);
                    table.push("</td><td align=right>");
                    if (this.type && this.type == '%') {
                        table.push(this.data[i][1] + "%");
                    } else {
                        table.push(Math.ceil(this.total * this.data[i][1] / 100));
                    }
                    table.push("</td></tr>");
                }
                table.push("</table>");
                this.container.insertAdjacentHTML("afterEnd", '<div   >  ' + table.join("") + '</div>');
            },
            render: function() {
                this.percentize();
                this.renderPie();
                this.renderLabel();
                return true;
            }
        };
        var Pie = function(conf) {
                return new F(conf);
            },
            r;
 
 
 
 
 
        return Pie;
 
    })();
 
 
    window.pie = Pie;
})(window);

html5 canvas画饼的更多相关文章

  1. HTML5 Canvas 画虚线组件

    前段时间由于项目需要,用到了HTML5 Canvas画图,但是没有画虚线的方法,自己写了一个HTML5 画虚线的组件. dashedLine.js if (window.CanvasRendering ...

  2. HTML5 Canvas 画钟表

    画钟表是2D画图的老生常谈,我也不能免俗弄了一个.代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta ht ...

  3. CSS3进度条 和 HTML5 Canvas画圆环

    看到一些高大上的进度条插件,然后想自己用CSS写.经过搜索资料之后,终于成功了.为了以后方便拿来用,或者复习.将代码贴出. HTML代码: 只需要两个div,外面的为一个有border的div id为 ...

  4. html5 canvas画不出图像的原因

    很久没写博客了,今年过年的时候,家里出了意外,现在心里依然很难受.6月份之前一直忙着写毕业论文,答辩完6月初回公司继续上班,今天刚好周末有空,就写下之前碰到一个问题. 做一个图像查看器(基于Chrom ...

  5. 基于HTML5 Canvas的饼状图表实现教程

    昨天我们分享了一款基于HTML5的线性图表应用,效果非常不错,可以看在线DEMO或者实现教程.今天我们继续来分享一款基于HTML5的网页图表,它也是利用Canvas绘制的,但是和前面不同的是,这款图表 ...

  6. html5 canvas画流程图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. HTML5 Canvas画数字时钟

    先不说废话,没代码算个蛋. 一些地方注释都写得比较清楚,不过这只是部分,因为只有秒针,但是时针,分针的逻辑都是一致的. 代码中有些坐标不知道为什么较不准,看看就好

  8. html5 canvas画进度条

    这个ie8的兼容是个问题,ie8 的innerHTML有问题啊,添加两个附件吧 <!DOCTYPE html> <html> <head> <meta cha ...

  9. html5 canvas 画hello ketty

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

随机推荐

  1. 115. distinct subsequence leetcode python

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  2. 对国外某hotel的内网域简单渗透

    Penetration Testing不单单是一个博客,更热衷于技术分享的平台. 本文将讲述对国外某一hotel的渗透测试,让更多的人安全意识得到提高,有攻才有防,防得在好,也有疏忽的地方,这就是为啥 ...

  3. iOS开发个人独立博客收集

    如今国内技术博客站点有非常多,如CSDN,CNBlog,ITEye等.论坛的话主要是要cocachina. 这里是我收集的iOS开发个人独立博客,文章用搜索引擎比較难搜到,都是牛人: OneV's D ...

  4. google PLDA + 实现原理及源代码分析

    LDA背景 LDA(隐含狄利克雷分布)是一个主题聚类模型,是当前主题聚类领域最火.最有力的模型之中的一个,它能通过多轮迭代把特征向量集合按主题分类. 眼下,广泛运用在文本主题聚类中. LDA的开源实现 ...

  5. falsh,.swf文件修改z-index

    <object style="z-index:-1;"> <param name="wmode" value="transparen ...

  6. JS门面模式

    门面模式 前言 门面模式的本质是实现一个简单的同一接口来处理对各个子系统接口的处理和调用.和桥接模式不同的是:桥接模式中的各个类是全然独立的,桥接模式仅仅在必要的时候将这些类关联起来. 门面模式则有点 ...

  7. unity 切圆角矩形 --shader编程

    先上个效果图 制作思路 如上图我们要渲染的就是上图带颜色的部分 步骤: 先获取黄色和蓝绿部分 例如以下图 算法 |U|<(0.5-r)或|V|<(0.5-r) 注意的是模型贴图最大值是1. ...

  8. Allegro中解决鼠标放在走线上网络名、走线长度显示不出来的问题

    一些PCB设计者在使用allegro时,由于一些误操作 导致当鼠标放在走线(cline)和网络(net)上面时,软件没有显示该走线的所属网络,或者相关的长度信息.本人经过help文档发现,以下方法可以 ...

  9. Cookie的写入,和读取

    public static void SetLoginGmameInfo(string  uid, string sid, string timestring, string sign)       ...

  10. Iconfot阿里妈妈-css高级应用

    矢量图标替换教程 首先进入:http://www.iconfont.cn/ 搜索你分类的关键字---然后加入购物车 加入购物车之后,下载到本地用浏览器打开demo.html 把a class=“原来样 ...