JavaScript canvas基于数组生成柱状图代码实例
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; } }
效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. JavaScript避免嵌套代码浅析2. CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chrome、Opera3. 在 XSL/XSLT 中实现随机排序4. 《CSS3实战》笔记--渐变设计(一)5. asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明6. XML在语音合成中的应用7. CSS3实例分享之多重背景的实现(Multiple backgrounds)8. Vue Element UI 表单自定义校验规则及使用9. 用css截取字符的几种方法详解(css排版隐藏溢出文本)10. chatGPT教我写compose函数的详细过程
