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 相关文章推荐
jQuery 名称冲突的解决方法
Apr 08 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
Javascript的表单验证长度
Mar 16 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
前端框架ECharts dataset对数据可视化的高级管理
Dec 24 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去除字符串换行符示例分享
2014/02/13 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
javascript 写类方式之一
2009/07/05 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
js比较日期大小的方法
2015/05/12 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
python生成lmdb格式的文件实例
2018/11/08 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
个人自荐信
2013/12/05 职场文书
销售人才自我评价范文
2014/09/27 职场文书
2014年德育工作总结
2014/11/20 职场文书
自我检讨书范文
2015/01/28 职场文书
搞笑结婚保证书
2015/05/08 职场文书
大学生读书笔记大全
2015/07/01 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
商业计划书之服装
2019/09/09 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书