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 相关文章推荐
JS event使用方法详解
Apr 28 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
Javascript 匿名函数及其代码模式原理
Mar 19 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
Oct 15 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
详解Vue监听数据变化原理
Mar 08 Javascript
JS实现直接运行html代码的方法
Mar 13 Javascript
JavaScript利用键盘码控制div移动
Mar 19 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
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+MySql编写聊天室
2006/10/09 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
python八大排序算法速度实例对比
2017/12/06 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
批评与自我批评材料
2014/02/15 职场文书
农民工讨薪标语
2014/06/26 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python