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 使用手册(七)
Sep 23 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
Dec 13 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
浅析创建javascript对象的方法
May 13 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
Aug 05 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php开发工具之vs2005图解
2008/01/12 PHP
php获取某个目录大小的代码
2008/09/10 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
javascript 三种编解码方式
2010/02/01 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Python中调用其他程序的方式详解
2019/08/06 Python
高中历史教学反思
2014/02/08 职场文书
简单的项目建议书模板
2014/03/12 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
爱心捐款感谢信
2015/01/20 职场文书
租赁协议书
2015/01/27 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python
win10更新失败无限重启解决方法
2022/04/19 数码科技
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技