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 相关文章推荐
弹出广告特效(一个IP只弹出一次)的代码
Jul 27 Javascript
javascript radio 联动效果
Mar 04 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
Raphael带文本标签可拖动的图形实现代码
Feb 20 Javascript
JS、CSS加载中的小问题探讨
Nov 26 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
JavaScript中发出HTTP请求最常用的方法
Jul 12 Javascript
Selenium执行JavaScript脚本的方法示例
Dec 31 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数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
javascript各种复制代码收集
2008/09/20 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
会计专业大学生职业生涯规划书
2014/02/11 职场文书
节能减耗标语
2014/06/21 职场文书
家长会欢迎标语
2014/06/24 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript