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 写类方式之九
Jul 05 Javascript
jQuery与ExtJS之选择实例分析
Aug 19 Javascript
jquery的Theme和Theme Switcher使用小结
Sep 08 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
js自定义input文件上传样式
Oct 26 Javascript
Vue组件通信的几种实现方法
Apr 25 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 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实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
如何在pycharm中安装第三方包
2020/10/27 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
劳动模范事迹材料
2014/01/19 职场文书
安全生产先进个人材料
2014/02/06 职场文书
《乞巧》教学反思
2014/02/27 职场文书
大学计划书范文800字
2014/08/14 职场文书
就业协议书怎么填
2014/09/15 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
见习报告的格式
2014/11/04 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
环保主题班会教案
2015/08/13 职场文书
民事纠纷协议书
2016/03/23 职场文书