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 相关文章推荐
一款JavaScript压缩工具:X2JSCompactor
Jun 13 Javascript
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 Javascript
javascript中onclick(this)用法介绍
Apr 19 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
基于Vue实现拖拽效果
Apr 27 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
小程序登录/注册页面设计的实现代码
May 24 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
使用python生成目录树
2018/03/29 Python
使用TensorFlow实现SVM
2018/09/06 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
详解重置Django migration的常见方式
2019/02/15 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
python如何写出表白程序
2020/06/01 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
师范院校学生自荐信范文
2013/12/27 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript