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 相关文章推荐
window.open的功能全解析
Oct 10 Javascript
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
Javascript之旅 对象的原型链之由来
Aug 25 Javascript
浅析jquery某一元素重复绑定的问题
Jan 03 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
js操作table元素实现表格行列新增、删除技巧总结
Nov 18 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
vue-router重定向不刷新问题的解决
Jun 25 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 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
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
vue项目中用cdn优化的方法
2018/01/03 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
React实现轮播效果
2020/08/25 Javascript
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
罗技美国官网:Logitech美国
2020/01/22 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
经贸日语专业个人求职信范文
2013/12/28 职场文书
年会活动策划方案
2014/01/23 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
教书育人演讲稿
2014/09/11 职场文书
2014年宣传工作总结
2014/11/18 职场文书
关于感谢信的范文
2015/01/23 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers