标题:HTML5饼状图代码
只看楼主
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
结帖率:98.25%
 问题点数:0 回复次数:8 
HTML5饼状图代码
<!DOCTYPE html>

<html lang="en" xmlns="http://www.
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <script>
        var data = [
            { numb: 4.85, color: '#00ff00', text: 'IE6.0' },
            { numb: 4.23, color: '#99ff44', text: 'IE7.0' },
            { numb: 23.88, color: '#44ff99', text: 'IE8.0' },
            { numb: 6.94, color: '#aaffaa', text: 'IE9.0' },
            { numb: 34.36, color: '#0000ff', text: 'Chome' },
            { numb: 4.77, color: '#ff1100', text: '搜狗' },
            { numb: 2.71, color: '#ff6600', text: '猎豹' },
            { numb: 2.28, color: '#ffbb00', text: '2345' },
            { numb: 13.22, color: '#020302', text: '其他' }
        ];

        function pieChart(data, width, height, cx, cy, r, lx, ly) {
            /// <signature>
            /// <summary>绘制饼状图</summary>
            /// <param name="data">数据源,如:{numb:4.85,color:'#00ff00',name:'IE6.0'}的对象数组</param>
            /// <param name="width">图像的宽,单位:像素</param>
            /// <param name="height">图像的高,单位:像素</param>
            /// <param name="cx">饼状图圆心的x坐标</param>
            /// <param name="cy">饼状图圆心的y坐标</param>
            /// <param name="r">饼状图圆的半径</param>
            /// <param name="lx">饼状图左上角的x坐标</param>
            /// <param name="ly">饼状图左上角的y坐标</param>
            /// </signature>

            var i = 0, len = data.length,
                // svg元素的XML命名空间
                svgns = 'http://www.',
                // 饼状图总大小 和 分片大小数组
                total = 0, angles = [],
                // 记录分片绘制的起始和终止点
                startAngle = 0, endAngle = 0,
                // 分片绘制的起始点和终止点的坐标
                x1, x2, y1, y2,
                // 各个标签的变量
                chart, path, icon, label,
                // 其他变量
                big, d;

            // 创建一个svg元素,同时指定像素大小和用户坐标
            chart = document.createElementNS(svgns, 'svg:svg');
            chart.setAttribute('width', width);
            chart.setAttribute('height', height);
            chart.setAttribute('viewBox', '0 0 ' + width + ' ' + height);

            // 累加data.numb的值,获得饼状图的大小
            for (i = 0; i < len; i++) {
                total += data[i].numb;
            }
            // 计算出饼状图每个分片的大小,其中角度以弧度制计算
            for (i = 0; i < len; i++) {
                angles[i] = data[i].numb / total * Math.PI * 2;
            }

            // 遍历饼状图的每个分片
            for (i = 0; i < len; i++) {
                endAngle = startAngle + angles[i];

                x1 = cx + r * Math.sin(startAngle);
                y1 = cy - r * Math.cos(startAngle);
                x2 = cx + r * Math.sin(endAngle);
                y2 = cy - r * Math.cos(endAngle);

                big = 0;
                angles[i] > Math.PI && (big = 1);
                // 使用<svg:path>元素来描述楔
                // 要注意的是,使用createElementNS()来创建该元素
                path = document.createElementNS(svgns, "path");
                // 下面的字符串包含路径的详细信息
                // M:从圆心开始;L:画一条到(x1,y1)的线段,A:画一条半径为r的弧,弧的详细信息,到(x2,y2)结束;Z:当前路径到(cx,cy)结束
                d = 'M ' + cx + ',' + cy + ' L ' + x1 + ',' + y1 + ' A ' + r + ',' + r + ' 0 ' + big + ' 1 ' + x2 + ',' + y2 + ' Z';
                // 设置<svg:path>元素的属性
                path.setAttribute("d", d); // 设置路径
                path.setAttribute("fill", data[i].color); // 设置楔的颜色
                path.setAttribute("stroke", '#fff'); // 楔的外边框颜色
                path.setAttribute("stroke-width", '1'); // 楔外边框宽度
                chart.appendChild(path);

                // 当前楔的结束就是下一个楔的开始
                startAngle = endAngle;

                // 绘制一些相应的小方块来表示图例
                icon = document.createElementNS(svgns, 'rect');
                icon.setAttribute('x', lx); // 定位小方块
                icon.setAttribute('y', ly + 30 * i);
                icon.setAttribute('width', 20); // 设置小方块大小
                icon.setAttribute('height', 20);
                icon.setAttribute('fill', data[i].color); // 填充小方块的颜色和对应的楔的颜色相同
                icon.setAttribute('stroke', '#fff'); // 子外边框的颜色也相同
                icon.setAttribute('stroke-width', '1');
                chart.appendChild(icon);

                //在小方块右侧添加文本标签
                label = document.createElementNS(svgns, 'text');
                label.setAttribute('x', lx + 30); // 定位文本标签
                label.setAttribute('y', ly + 30 * i + 18);
                label.setAttribute('font-family', 'sans-serif'); // 文本样式属性还可以通过css来设置
                label.setAttribute('font-size', '16');
                label.appendChild(document.createTextNode(data[i].text + ' : ' + data[i].numb + '%'));
                chart.appendChild(label);
            }

            return chart;
        };

        document.body.appendChild(pieChart(data, 640, 400, 200, 200, 150, 400, 100));
    </script>
</body>
</html>
搜索更多相关主题的帖子: HTML5 color title 
2015-05-21 14:23
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
扑通

DO IT YOURSELF !
2015-05-21 14:25
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1501
专家分:6573
注 册:2010-7-5
得分:0 
不错,收藏!

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-05-21 14:43
胡七七
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:304
专家分:851
注 册:2015-5-14
得分:0 
看不懂
2015-05-21 14:53
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
大神,带我飞吧,我是你的了

思考赐予新生,时间在于定义
2015-05-21 15:15
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
得分:0 
回复 5楼 love云彩
不至于吧,这只是html5的基础用法

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-05-21 15:31
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
    

能编个毛线衣吗?
2015-05-21 16:10
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
学习,留着备用。

活到老,学到老! http://www. E-mail:hu-jj@
2015-05-21 17:16
龙牙
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大汉
等 级:贵宾
威 望:17
帖 子:769
专家分:6207
注 册:2013-3-18
得分:0 
学习

只要心是晴朗的,人生就没有雨天。
2015-05-21 19:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445565-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109020 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved