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居然支持中文(unicode)编程!
Apr 12 Javascript
ImageFlow可鼠标控制图片滚动
Jan 30 Javascript
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
jQuery实现返回顶部效果的方法
May 29 Javascript
javascript的函数劫持浅析
Sep 26 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
WordPress自定义时间显示格式
2015/03/27 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP链表操作简单示例
2016/10/15 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
基于javascript的拖拽类封装详解
2019/04/19 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python使用socket进行简单网络连接的方法
2015/04/29 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
浅析使用Python操作文件
2017/07/31 Python
python和ruby,我选谁?
2017/09/13 Python
python如何使用unittest测试接口
2018/04/04 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
简单的Python人脸识别系统
2020/07/14 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
python 实现的车牌识别项目
2021/01/25 Python
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
项目副经理岗位职责
2013/12/30 职场文书
中学校庆方案
2014/03/17 职场文书
座谈会主持词
2014/03/20 职场文书
员工生日会策划方案
2014/06/14 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
爱国电影观后感
2015/06/19 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript