html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>饼图封装</title>
</head>
<body>
<div id="container"></div>
</body>
</html>

js

<script src="jrChart.js"></script>
<script>var obj = {id:"container",width:500,height:300,data:[{name:"不及格",num:4,color:"red"},{name:"及格",num:13,color:"orange"},{name:"良好",num:30,color:"purple"},{name:"优秀",num:2,color:"green"},{name:"满分",num:1,color:"blue"}]}drawPie(obj);
</script>

引入名叫jrChart的js文件

function drawPie(obj) {var id = obj.id;var data = obj.data;var width = obj.width;var height = obj.height;var length = data.length;//获取每个数据所占的百分比var sum = 0;for(var i = 0;i < length;i++){sum = sum + data[i].num}console.log(sum);var container = document.getElementById(id);container.style.width = width + "px";container.style.height = height + "px";var canvas = document.createElement("canvas");canvas.width = width;canvas.height = height;canvas.style.border = "1px solid red";var cvs = canvas.getContext("2d");container.appendChild(canvas);var ox = width / 2;var oy = height/2;var or;if(width > height){or = height / 3;}else {or = width / 3;}var start = 0;var end = 0;var rates = [];for(var j = 0;j < length;j++){rates[j] = data[j].num / sum;end = start + Math.PI * 2 * (data[j].num / sum);cvs.beginPath();cvs.fillStyle = data[j].color;cvs.moveTo(ox,oy);cvs.arc(ox,oy,or,start,end);cvs.closePath();cvs.fill();start = end;}console.log(rates);var rectY = 0;for(var k = 0;k < length;k++){rectY = 20 * (k+1);cvs.beginPath();cvs.fillStyle = data[k].color;cvs.rect(20,rectY,25,13);cvs.fill();cvs.closePath();}var text = "";var textX = 60;var textY = 0;for(var m = 0;m<length;m++){text = data[m].name + (rates[m] * 100) + "%";textY = 20 * (m+1) + 12;cvs.beginPath();cvs.fillStyle = data[m].color;cvs.fillText(text,textX,textY,50);cvs.fill();cvs.closePath();}
}

结果如下

js简单插件(饼形图)相关推荐

  1. java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...

    总览: 一. GridManager.js表格插件 直接上插件API:链接地址 感觉该插件简单好用,插件作者也是有问必答,nice 二. 添加依赖 后端: pom文件添加: 1.7.0.RELEASE ...

  2. Jquery提交表单 Form.js官方插件介绍

    來源:http://hi.baidu.com/dereky/blog/item/f9e8ab64c52f4ff3f736540c.html [JQuery框架应用]:form.js官方插件介绍 For ...

  3. pc端html轮播带滑块,swiper.js简单快速实现轮播滑动(兼容PC端、移动端)

    swiper是一款免费以及轻量级轮播滑动的js框架,适用于PC端跟移动端,官方地址:(https://www.swiper.com.cn/) 效果演示: PC端 移动端(在浏览器将设备切换为手机,这里 ...

  4. html图片编辑器插件,js图片编辑器插件Filerobot

    Filerobot是一款js图片编辑器插件.Filerobot可以对图片进行修改尺寸,剪裁,旋转,以及使用内置的滤镜对图片进行过滤. 使用方法 在页面中引入下面的文件. 初始化插件 filerbot的 ...

  5. 原生js打印插件Print.js

    网页打印功能在很多的网站系统中都会使用到.比如说报表打印功能等. 以下是在Jquery插件库中找到的一款原生js打印插件,代码清洁简单,封装的代码也很好理解. index.html页面代码 <! ...

  6. 支持移动触摸设备的简洁js幻灯片插件

    lory是一款支持移动触摸设备的简洁的js幻灯片插件.该 幻灯片插件可以通过纯js调用,也可以将该幻灯片插件作为 jquery插件来使用.该幻灯片的过渡动画具有硬件加速功能,并且可以定制是否使用eas ...

  7. 零基础开发 Node.js Addons 插件:参数与返回值处理

    上一篇回顾 零基础开发 Node.js Addons 插件:Hello Node-API.本篇介绍使用 Node-API 为 Node.js 开发基于 C 的 Addons 时,如何接收与处理 Nod ...

  8. 非常不错的地区三级联动,js简单易懂。封装起来了(转)

    非常不错的地区三级联动,js简单易懂.封装起来了 首先需要引入area.js,然后配置并初始化插件: 例: <!-- 绑定银行卡开始 --><script src="js/ ...

  9. 推荐几个比较有意思的js效果插件

    推荐几个比较有意思的js效果插件 wow.js 数字累加插件 CounterUp wow.js 这个东西很有意思,具体怎么有意思呢,就是你可以用很简单的方法引用它,然后通过加类名的方法就可以让你的网页 ...

最新文章

  1. 零基础学Java程序有什么好的建议
  2. FeignClientAutoConfiguration
  3. arduino如何调用mysql,【 实测可用 】Arduino 直接访问 mysql
  4. codevs 2639 约会计划
  5. python下什么-python官网下的包是干什么用的?
  6. kuberbetes的架构与kubernetets集群搭建
  7. android重新加载程序,从被杀死的Android应用程序中恢复
  8. iphone备忘录突然没了_iphone备忘录突然没了?丢失的备忘录内容怎么找回?
  9. 悲剧!他写了20000行代码,却连6岁孩子都比不过!
  10. mybatis源码学习方式
  11. 支持向量机总结(SVM)
  12. set+线段树 Codeforces Round #305 (Div. 2) D. Mike and Feet
  13. 同济大学 线性代数 第六版 pdf_线性代数同济大学第六版第一章课后习题答案
  14. python语言程序设计实验教程答案实验三_20194220 实验三《Python程序设计》实验报告...
  15. BC26 OpenCPU RTC/PSM_EINT API接口
  16. 粒子滤波(PF)原理详解
  17. 域名使用https访问配置
  18. 计算机无法正常启动安全模式开启,Win7电脑开机无法正常启动只能进入安全模式怎么解决...
  19. ES5 标准对象说明
  20. Oracle DBA 转行,作为一名oracle dba需要学习的知识

热门文章

  1. java jzip_JAVA UI 实现ZIP的压缩与解压缩
  2. 网页崩溃原因软件测试,支招:原来这些才是APP崩溃的主要原因!资深技术大牛测试经验总结...
  3. 怎样判断计算机硬盘损坏,检测硬盘是否损坏的方法来了,这里有四种判断方法!...
  4. 淘宝-没素质的商家给消费者加入禁购名单
  5. 关于联想笔记本无线网老是掉线的解决方法
  6. OpenDrive数据格式中文版
  7. ggplot2_ `scale_xxx()`标度调整
  8. 张一鸣:积极乐观的心理期待,对成功有害!
  9. NVIDIA Jetson AGX Orin的计算能力
  10. Delphi FastReport 小结