JavaScript canvas基于數(shù)組生成柱狀圖代碼實(shí)例
HTML5 的 canvas 元素使用 JavaScript 在網(wǎng)頁(yè)上繪制圖像。
畫布是一個(gè)矩形區(qū)域,您可以控制其每一像素。
canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。
canvas 元素本身是沒(méi)有繪圖能力的。所有的繪制工作必須在 JavaScript 內(nèi)部完成:
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;
//每個(gè)柱狀圖的寬為總寬-間隙寬除個(gè)數(shù)
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;
}
}
效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS highcharts動(dòng)態(tài)柱狀圖原理及實(shí)現(xiàn)
- JavaScript實(shí)現(xiàn)的DOM繪制柱狀圖效果示例
- angularjs實(shí)現(xiàn)柱狀圖動(dòng)態(tài)加載的示例
- 利用D3.js實(shí)現(xiàn)最簡(jiǎn)單的柱狀圖示例代碼
- D3.js實(shí)現(xiàn)柱狀圖的方法詳解
- jQuery.Highcharts.js繪制柱狀圖餅狀圖曲線圖
- JavaScript根據(jù)數(shù)據(jù)生成百分比圖和柱狀圖的實(shí)例代碼
- Javascript實(shí)時(shí)柱狀圖實(shí)現(xiàn)代碼
- JS使用canvas技術(shù)模仿echarts柱狀圖
相關(guān)文章
js實(shí)現(xiàn)瀑布流布局(無(wú)限加載)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)瀑布流布局,無(wú)限加載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
js實(shí)現(xiàn)向右橫向滑出的二級(jí)菜單效果
這篇文章主要介紹了js實(shí)現(xiàn)向右橫向滑出的二級(jí)菜單效果,涉及javascript鼠標(biāo)事件及頁(yè)面元素的隱藏與顯示實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
JS 實(shí)現(xiàn)列表與多選框選擇附預(yù)覽動(dòng)畫
本節(jié)為大家介紹的是用JS實(shí)現(xiàn)列表與多選框選擇,并附gif演示動(dòng)畫,這個(gè)例子很詳細(xì),大家可以看看2014-10-10
Layui彈框中數(shù)據(jù)表格中可雙擊選擇一條數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了Layui彈框中數(shù)據(jù)表格中可雙擊選擇一條數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
JavaScript使用atan2來(lái)繪制箭頭和曲線的實(shí)例
下面小編就為大家?guī)?lái)一篇JavaScript使用atan2來(lái)繪制箭頭和曲線的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
ionic cordova一次上傳多張圖片(類似input file提交表單)的實(shí)現(xiàn)方法
這篇文章主要介紹了ionic cordova一次上傳多張圖片(類似input file提交表單)的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
javascript中2個(gè)感嘆號(hào)的用法實(shí)例詳解
這篇文章主要介紹了javascript中2個(gè)感嘆號(hào)的用法,并用大量的實(shí)例講述了!!的常見應(yīng)用情況,是非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09

