JavaScript canvas基于数组生成柱状图代码实例


Posted in Javascript onMarch 06, 2020

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。

画布是一个矩形区域,您可以控制其每一像素。

canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:

canvas柱状图

var arr = [
  { id: 1001, price: 100 },
  { id: 1002, price: 150 },
  { id: 1003, price: 200 },
  { id: 1004, price: 70 },
  { id: 1005, price: 300 }
 ];
 var gap = 20;
 var canvas = document.querySelector("canvas");
 var ctx;
 init();
 function init() {
  canvas.width = 400;
  canvas.height = 300;
  ctx = canvas.getContext("2d");
  var max = arr.reduce((value, item) => {
  return value < item.price ? item.price : value;
  }, arr[0].price);
  //max高为300的4/5,其他的高为:300*(4/5)/(max) * h maxh:240 = othersh: ? ? = 240 
  var scaleHeight = 300 * 4 / 5 / max;
  //每个柱状图的宽为总宽-间隙宽除个数
  var width = (400 - (gap * (arr.length + 1))) / arr.length;
  createChart(width, scaleHeight);
 }

 function createChart(w, hs) {
  ctx.fillStyle = "rgba(0,0,0,0.7)";
  ctx.fillRect(0, 0, 400, 300);
  var x = 0;
  for (var i = 0; i < arr.length; i++) {
  x += gap;
  ctx.fillStyle = "orange";
  var h = hs * arr[i].price;
  ctx.fillRect(x, 300 - h, w, h);
  x += w;
  }
 }

效果:

JavaScript canvas基于数组生成柱状图代码实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中“+”的陷阱深刻理解
Dec 04 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
JS获取字符对应的ASCII码实例
Sep 10 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
微信小程序自动客服功能
Nov 02 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
基于JS实现快速读取TXT文件
Aug 25 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 #Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 #Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 #Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 #Javascript
javascript中可能用得到的全部的排序算法
Mar 05 #Javascript
js的Object.assign用法示例分析
Mar 05 #Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 #Javascript
You might like
PHP 数据库树的遍历方法
2009/02/06 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
如何编写jquery插件
2017/03/29 jQuery
探索webpack模块及webpack3新特性
2017/09/18 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
理货员的岗位职责
2013/11/23 职场文书
给校长的一封建议书
2014/03/12 职场文书
平安建设实施方案
2014/03/19 职场文书
导师推荐信范文
2014/05/09 职场文书
保护环境倡议书100字
2014/05/19 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
班级出游活动计划书
2014/08/15 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
解除劳动合同协议书
2014/09/17 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
怎样写辞职信
2015/02/27 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript