最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript+Canvas實現簡單的柱狀圖

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

筆者之所以想要深入了解 Canvas,是因為最近幾次的實習部門都屬于 Data 這個門類下面,所以用echarts之類的圖標庫會很多很多,那么當然要好好學一下其間的底層原理了。

那么讓我們好好聊聊,如何實現一個柱狀圖

如何實現一個柱狀圖

Step1

首先創(chuàng)建一個叫做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來實現一個矩形。

fillRect(x, y, xWidth, yHeight)

fillRect有四個參數,分別是x的坐標,y的坐標,寬度與高度。

Step2

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

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

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

//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

在我們的基本條件都具備了之后,我們可以添加數據了,這里采用一個循環(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);
} 

效果如下:

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

Step4

我們知道,fillRect的前兩個參數是我們的起點x和y的坐標,那么為了實現“正”的效果,我們可以移動起點的位置。

//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);
} 

效果如下:

是不是看起來很舒服啦?

但是現在還有一個問題,我們的坐標軸去哪了???

Step5

現在,讓我們一起來畫一個坐標軸

首先需要畫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軸標記點和文本

//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);
} 

效果如下:

看起來有部分問題,讓我們再來做一些調整!

Step6

將背景色改成白色 & 把起點做一下變更。

//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); 
} 

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

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

相關文章

  • canvas實現動態(tài)小球重疊效果

    canvas實現動態(tài)小球重疊效果

    在javascript運動系列中,詳細介紹了各種運動,其中就包括碰壁運動。但是,如果用canvas去實現,卻是另一種思路。本文將詳細介紹canvas動態(tài)小球重疊效果。下面跟著小編一起來看下吧
    2017-02-02
  • JS ES新特性 擴展運算符介紹

    JS ES新特性 擴展運算符介紹

    這篇文章主要介紹了JS ES新特性 擴展運算符,下面文章圍繞ES新特性 擴展運算符的相關資料展開詳細內容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-12-12
  • 僅一個form表單 js實現注冊信息依次填寫提交功能

    僅一個form表單 js實現注冊信息依次填寫提交功能

    這篇文章主要為大家詳細介紹了僅一個form表單,JavaScript可實現注冊信息依次填寫提交功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • js replace替換字符串同時替換多個方法

    js replace替換字符串同時替換多個方法

    這篇文章主要介紹了js replace替換字符串同時替換多個方法 的相關資料,需要的朋友可以參考下
    2018-11-11
  • 詳解JavaScript嚴格模式的使用方法

    詳解JavaScript嚴格模式的使用方法

    JavaScript的嚴格模式(Strict?Mode)是一種在代碼中啟用的特殊模式,用于提供更嚴格的語法和錯誤檢查,以改善代碼質量和增強安全性,本文主要介紹JS的嚴格模式的用法,可以幫助大家避免一些常見的錯誤,需要的朋友可以參考下
    2023-05-05
  • 通過一篇文章由淺入深的理解JSONP并拓展

    通過一篇文章由淺入深的理解JSONP并拓展

    這篇文章主要給大家介紹了關于理解JSONP并拓展的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • IntelliJ IDEA 安裝vue開發(fā)插件的方法

    IntelliJ IDEA 安裝vue開發(fā)插件的方法

    本篇文章主要介紹了IntelliJ IDEA 安裝vue開發(fā)插件的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • js 創(chuàng)建對象的多種方式與優(yōu)缺點小結

    js 創(chuàng)建對象的多種方式與優(yōu)缺點小結

    這篇文章主要介紹了js 創(chuàng)建對象的多種方式與優(yōu)缺點,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下
    2021-03-03
  • popdiv

    popdiv

    popdiv...
    2006-07-07
  • JavaScript通過IP地址獲取用戶精確位置的代碼實現

    JavaScript通過IP地址獲取用戶精確位置的代碼實現

    在Web開發(fā)中,獲取用戶地理位置是常見的需求,傳統(tǒng)的HTML5 Geolocation API雖然精確,但需要用戶授權,且移動端支持較好而桌面端較差,本文將介紹JavaScript如何通過IP地址獲取用戶精確位置,需要的朋友可以參考下
    2026-01-01

最新評論

罗平县| 阜南县| 多伦县| 吉安市| 台山市| 阳江市| 清新县| 左云县| 日喀则市| 五华县| 隆尧县| 泾源县| 大同市| 浦东新区| 汝城县| 宜宾县| 蛟河市| 望江县| 秦皇岛市| 家居| 台南县| 蒲城县| 屏东市| 准格尔旗| 正阳县| 河源市| 田东县| 虎林市| 沧州市| 泰顺县| 辉南县| 当阳市| 和林格尔县| 老河口市| 庆云县| 长岛县| 读书| 理塘县| 延吉市| 庆云县| 丘北县|