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 相关文章推荐
用函数式编程技术编写优美的 JavaScript
Nov 25 Javascript
复制本贴标题和地址的js代码
Jul 01 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
javascript实现网站加入收藏功能
Dec 16 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
socket.io学习教程之基础介绍(一)
Apr 29 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
写给小白看的JavaScript异步
Nov 29 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
深入Node TCP模块的理解
Mar 13 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
浅谈js闭包理解
2019/04/01 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python实现外卖信息管理系统
2018/01/11 Python
python如何在循环引用中管理内存
2018/03/20 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
服务行业口号
2014/06/11 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
试用期自我评价范文
2015/03/10 职场文书
python not运算符的实例用法
2021/06/30 Python
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技