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下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
window.addeventjs事件驱动函数集合addEvent等
Feb 19 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
JS实现留言板功能
Jun 17 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
基于js判断浏览器是否支持webGL
Apr 18 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 正则表达式的学习探讨
2013/06/06 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP会话控制实例分析
2016/12/24 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
企划经理的岗位职责
2013/11/17 职场文书
医院护士的求职信范文
2013/12/26 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
大学生安全责任书
2014/07/25 职场文书
面试复试通知单
2015/04/24 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电