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

 更新时间:2020年03月06日 08:48:50   作者:Island  
这篇文章主要介绍了JavaScript canvas基于数组生成柱状图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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;
  }
 }

效果:

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

相关文章

  • BootStrap中Datepicker控件带中文的js文件

    BootStrap中Datepicker控件带中文的js文件

    bootstrap-datepicker 是一个非常优秀的时间选择插件。这篇文章主要介绍了bootstrap-datepicker带中文的js文件的相关资料,需要的朋友可以参考下
    2016-08-08
  • JavaScript面向对象继承原理与实现方法分析

    JavaScript面向对象继承原理与实现方法分析

    这篇文章主要介绍了JavaScript面向对象继承原理与实现方法,结合实例形式分析就面向对象程序设计中原形、对象、继承的相关概念、原理、实现方法及操作注意事项,需要的朋友可以参考下
    2018-08-08
  • 解决循环中setTimeout执行顺序的问题

    解决循环中setTimeout执行顺序的问题

    今天小编就为大家分享一篇解决循环中setTimeout执行顺序的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • C++中的string类的用法小结

    C++中的string类的用法小结

    通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!
    2015-08-08
  • 基于js里调用函数时,函数名带括号和不带括号的区别

    基于js里调用函数时,函数名带括号和不带括号的区别

    下面小编就为大家带来一篇基于js里调用函数时,函数名带括号和不带括号的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数

    JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数

    这篇文章主要介绍了JavaScript -- JSON.parse 函数 和 JSON.stringify 函数,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • js正则test匹配的踩坑及解决

    js正则test匹配的踩坑及解决

    这篇文章主要为大家介绍了正则test匹配的踩坑示例讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 老生常谈JavaScript中的this关键字

    老生常谈JavaScript中的this关键字

    相对于很多其他的面向对象语言来说,this代表的就是当前对象。本篇文章通过实例给大家介绍js中的this关键字,感兴趣的朋友一起看看吧
    2016-10-10
  • 从JavaScript的函数重名看其初始化方式

    从JavaScript的函数重名看其初始化方式

    从JavaScript的函数重名看其初始化方式...
    2007-03-03
  • 微信小程序HTTP请求从0到1封装

    微信小程序HTTP请求从0到1封装

    这篇文章主要给大家介绍了关于微信小程序HTTP请求从0到1封装的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用微信小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论