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 相关文章推荐
图片onload事件触发问题解决方法
Jul 31 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
js获取会话框prompt的返回值的方法
Jan 10 Javascript
js窗口关闭提示信息(兼容IE和firefox)
Oct 23 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
大白话讲解JavaScript的Promise
Apr 06 Javascript
JS实现数组按升序及降序排列的方法
Apr 26 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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中str_replace函数使用小结
2008/10/11 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
Python中有几个关键字
2020/06/04 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
药店采购员岗位职责
2014/09/30 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
甲午大海战观后感
2015/06/02 职场文书
nginx配置之并发频次限制
2022/04/18 Servers