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 相关文章推荐
ExtJS 入门
Oct 29 Javascript
jQuery formValidator表单验证
Jan 07 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
JS去掉字符串中所有的逗号
Oct 18 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
Apr 22 Javascript
vue-cli 如何打包上线的方法示例
May 08 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
element el-input directive数字进行控制
Oct 11 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程序中的常见漏洞进行攻击
2006/10/09 PHP
PHP XML数据解析代码
2010/05/26 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
php中yii框架实例用法
2020/12/22 PHP
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
python模块之paramiko实例代码
2018/01/31 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
Python Http请求json解析库用法解析
2020/11/28 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
幼儿园教师获奖感言
2014/03/11 职场文书
村安全生产责任书
2014/08/25 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
银行求职信范文
2019/05/13 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书