欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript+Canvas實(shí)現(xiàn)簡(jiǎn)單的柱狀圖

 更新時(shí)間:2023年10月31日 14:12:25   作者:陽(yáng)樹陽(yáng)樹  
這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用Canvas實(shí)現(xiàn)繪制簡(jiǎn)單的柱狀圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

筆者之所以想要深入了解 Canvas,是因?yàn)樽罱鼛状蔚膶?shí)習(xí)部門都屬于 Data 這個(gè)門類下面,所以用echarts之類的圖標(biāo)庫(kù)會(huì)很多很多,那么當(dāng)然要好好學(xué)一下其間的底層原理了。

那么讓我們好好聊聊,如何實(shí)現(xiàn)一個(gè)柱狀圖

如何實(shí)現(xiàn)一個(gè)柱狀圖

Step1

首先創(chuàng)建一個(gè)叫做barchart.html的新文件,并且在其中寫入如下代碼:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <canvas width="500" height="500" id="canvas"></canvas>
  </body>
  <script>
    var data = [16, 68, 20, 30, 54];
  </script>
</html>

Tips 我們知道canvas可以使用fillRect來實(shí)現(xiàn)一個(gè)矩形。

fillRect(x, y, xWidth, yHeight)

fillRect有四個(gè)參數(shù),分別是x的坐標(biāo),y的坐標(biāo),寬度與高度。

Step2

我們創(chuàng)建文件包含了 canvasscript 元素,對(duì)canvas來說,我們標(biāo)注了他的寬高,它類似于DOM中的DIV元素,我們可以為其添加樣式和移動(dòng)位置。

data變量呢則是一系列的數(shù)據(jù)集,我們將用這些變量來畫柱狀圖。

接下來我們將獲取canvas元素,并且繪制一個(gè)底層色(灰色)

//get a reference to the canvas 
var canvas = document.getElementById('canvas');  
//get a reference to the drawing context 
var c = canvas.getContext('2d');  
//draw c.fillStyle = "gray"; 
c.fillRect(0,0,500,500); 

Step3

在我們的基本條件都具備了之后,我們可以添加數(shù)據(jù)了,這里采用一個(gè)循環(huán)來添加。

//draw data 
c.fillStyle = "blue"; 
for(var i=0; i<data.length; i++) {     
    var dp = data[i];
    c.fillRect(25 + i*100, 30, 50, dp*5);
} 

效果如下:

但是這里有一個(gè)問題,我們的柱狀圖,反了!怎么讓他正起來呢?

Step4

我們知道,fillRect的前兩個(gè)參數(shù)是我們的起點(diǎn)x和y的坐標(biāo),那么為了實(shí)現(xiàn)“正”的效果,我們可以移動(dòng)起點(diǎn)的位置。

//draw data 
c.fillStyle = "blue"; 
for(var i=0; i<data.length; i++) {     
    var dp = data[i];
    c.fillRect(25 + i*100, 500-dp*5 - 30 , 50, dp*5);
} 

效果如下:

是不是看起來很舒服啦?

但是現(xiàn)在還有一個(gè)問題,我們的坐標(biāo)軸去哪了???

Step5

現(xiàn)在,讓我們一起來畫一個(gè)坐標(biāo)軸

首先需要畫x軸和y

//draw axis lines 
c.fillStyle = "black"; 
c.lineWidth = 2.0; 
c.beginPath(); 
c.moveTo(30,10); 
c.lineTo(30,460); 
c.lineTo(490,460); 
c.stroke(); 

然后我們要新增y軸標(biāo)記點(diǎn)和文本

//draw text and vertical lines 
c.fillStyle = "black"; 
for(var i=0; i<6; i++) {
    c.fillText((5-i)*20 + "",4, i*80+60);
    c.beginPath();
    c.moveTo(25,i*80+60);
    c.lineTo(30,i*80+60);
    c.stroke(); 
} 

最后新增x軸文本

var labels = ["JAN","FEB","MAR","APR","MAY"]; 
//draw horiz text 
for(var i=0; i<5; i++) {     
    c.fillText(labels[i], 50+ i*100, 475);
} 

效果如下:

看起來有部分問題,讓我們?cè)賮碜鲆恍┱{(diào)整!

Step6

將背景色改成白色 & 把起點(diǎn)做一下變更。

//draw background 
c.fillStyle = "white"; 
c.fillRect(0,0,500,500);  
//draw data 
c.fillStyle = "blue"; 
for(var i=0; i<data.length; i++) {    
    var dp = data[i];     
    c.fillRect(40 + i*100, 460-dp*5 , 50, dp*5); 
} 

噔噔噔噔,我們的柱狀圖就這樣寫好啦~

到此這篇關(guān)于JavaScript+Canvas實(shí)現(xiàn)簡(jiǎn)單的柱狀圖的文章就介紹到這了,更多相關(guān)JavaScript Canvas柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論