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 相关文章推荐
js鼠标左右键 键盘值小结
Jun 11 Javascript
jqGrid jQuery 表格插件测试代码
Aug 23 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
Dec 29 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
Oct 24 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
KnockoutJs快速入门教程
May 16 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
JavaScript正则替换HTML标签功能示例
Mar 02 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
通过vue手动封装on、emit、off的代码详解
May 29 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 19 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 七大优势分析
2009/06/23 PHP
JS 网站性能优化笔记
2011/05/24 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
js数组操作学习总结
2013/11/04 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
python批量赋值操作实例
2018/10/22 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
Yahoo-PHP面试题4
2012/05/05 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
优秀毕业生求职信范文
2014/01/02 职场文书
初一地理教学反思
2014/01/16 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
出生医学证明书
2014/09/15 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年项目工作总结
2015/04/29 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
python处理json数据文件
2022/04/11 Python
Java中的Kotlin 内部类原理
2022/06/16 Java/Android