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 getElementsByTagName的简写方式
Jun 27 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
JSON 数据格式介绍
Jan 13 Javascript
js实现倒计时时钟的示例代码
Dec 17 Javascript
javascript实现获取浏览器版本、浏览器类型
Dec 02 Javascript
Express的路由详解
Dec 10 Javascript
js实现水平滚动菜单导航
Jul 21 Javascript
vue axios 二次封装的示例代码
Dec 08 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
JavaScript满天星导航栏实现方法
Mar 08 Javascript
bootstrap下拉框动态赋值方法
Aug 10 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 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里的中文变量说明
2011/07/23 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python正规则表达式学习指南
2016/08/02 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
django 外键model的互相读取方法
2018/12/15 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python request post上传文件常见要点
2020/11/20 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
自我评价200字分享
2013/12/17 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
《七月的天山》教学反思
2016/02/19 职场文书