javascript使用canvas实现饼状图效果


Posted in Javascript onSeptember 08, 2020

使用canvas写一个饼状图,供大家参考,具体内容如下

javascript使用canvas实现饼状图效果

代码:

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>

<body>
 <canvas id='canvas' width='800' height='400' style="border: 1px solid red;"></canvas>

 <script>
  let data = [
   { title: "服饰1", money: 400 },
   { title: "服饰2", money: 300 },
   { title: "服饰3", money: 400 },
   { title: "服饰4", money: 200 },
   { title: "服饰5", money: 500 },
   { title: "服饰6", money: 180 },
   { title: "服饰7", money: 500 }]

  /** @type {HTMLCanvasElement} */
  let canvas = document.querySelector("#canvas");
  let ctx = canvas.getContext("2d");
  let r = 100;

  let money = function (obj, sum) {
   for (let i = 0; i < obj.length; i++) {
    sum += data[i].money
    
   }
   return sum;
  }
  let totalmoney = money(data, 0);

  let nowsum = 0;
  let start = 0;
  let end = 0;
  let R = 100;
  let i=0;
  data.forEach(function (item) {
   ctx.beginPath()
   nowsum += item.money;
   end = (nowsum / totalmoney) 
   ctx.moveTo(150, 150);
   ctx.arc(150, 150, R, start*Math.PI*2, end*Math.PI*2)
   start = end;
   //产生随机颜色
   ctx.fillStyle = '#' + Math.floor(Math.random() * 0xffffff).toString(16);
   ctx.rect(350,5+(35*i),30,30);
   ctx.font="14px 黑体"
   ctx.fillText(item.title,400,25+(35*i))
   ctx.strokeStyle = "gray"
   ctx.fill();
   ctx.stroke();
   i++;
  })
 </script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
jQuery中的ajax async同步和异步详解
Sep 29 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
JS执行控制之节流模式实例分析
Dec 21 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 Javascript
vue配置多代理服务接口地址操作
Sep 08 #Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 #Javascript
JS删除对象中某一属性案例详解
Sep 08 #Javascript
vue全局使用axios的操作
Sep 08 #Javascript
Vue自定义多选组件使用详解
Sep 08 #Javascript
vue项目中微信登录的实现操作
Sep 08 #Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 #Javascript
You might like
用PHP实现图象锐化代码
2007/06/14 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
Python3.9新特性详解
2020/10/10 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
结构工程研究生求职信
2013/10/13 职场文书
挂职思想汇报
2013/12/31 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
春晚观后感
2015/06/11 职场文书
2016七夕情人节感言
2015/12/09 职场文书