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分析、压缩工具 JavaScript Analyser
Nov 30 Javascript
JavaScript入门学习书籍推荐
Jun 12 Javascript
JS 文件大小判断的实现代码
Apr 07 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
Nov 08 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 图片上添加透明度渐变的效果
2009/06/29 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JS高级运动实例分析
2016/12/20 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Python中的全局变量如何理解
2020/06/04 Python
python 绘制国旗的示例
2020/09/27 Python
歌唱比赛获奖感言
2014/01/21 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
学生吸烟检讨书
2014/09/14 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
介绍一下28个JS常用数组方法
2022/05/06 Javascript