canvas帶有座標的柱狀圖效果
本章節分享一段程式碼例項,它實現了柱狀圖效果。
並且此柱狀圖帶有座標,在底部文字框輸入資料即可生成柱狀效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .canvas { position: absolute; left: 0; top: 0; right: 0; bottom: 20%; margin: auto; } .text { width: 560px; height: 50px; border: 1px solid #000; position: absolute; left: 50%; top: 80%; margin-left: -280px; text-align: center; line-height: 50px; } .btn { cursor: pointer; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> // 繪製座標軸 function drawBone() { var c = document.getElementById("canvas"); var can = c.getContext("2d"); // 繪製X座標軸 can.beginPath(); can.lineWidth = "2"; can.moveTo(50, 50); can.lineTo(50, 350); can.strokeStyle = "#000"; can.stroke(); // 繪製y座標軸 can.beginPath(); can.lineWidth = "2"; can.moveTo(50, 350); can.lineTo(650, 350); can.strokeStyle = "#000"; can.stroke(); // 繪製x座標軸刻度線 for (var i = 0; i < 12; i++) { can.beginPath(); can.lineWidth = "1"; can.moveTo(70 + i * 50, 340); can.lineTo(70 + i * 50, 350); can.strokeStyle = "#000"; can.stroke(); // 繪製x座標軸刻度值 can.font = "12px Arial"; can.fillStyle = "#000"; can.fillText(i, 66 + i * 50, 365); } can.font = "30px Arial"; can.fillText("x", 660, 365); // 繪製y座標軸刻度線 for (var i = 0; i < 5; i++) { can.beginPath(); can.lineWidth = "2"; can.moveTo(50, 100 + i * 50); can.lineTo(60, 100 + i * 50); can.strokeStyle = "#000"; can.stroke(); } // 繪製y座標軸刻度值 for (var i = 0; i < 6; i++) { can.font = "12px Arial"; can.fillStyle = "#000"; can.fillText(i * 50, 20, 350 - i * 50); } can.font = "20px Arial"; can.fillText("y", 20, 50); } // 繪製條形圖 function drawPic(data, color) { var c = document.getElementById("canvas"); var can = c.getContext("2d"); for (var i = 0; i < data.length; i++) { can.fillStyle = color[i]; can.fillRect(70 + 2 * i * 50, 350 - data<i>, 50, data<i>); can.beginPath(); can.lineWidth = "0.5"; can.strokeStyle = color<i>; can.moveTo(50 + 70 + 2 * i * 50, 350 - data<i>); can.lineTo(50, 350 - data[i]) can.stroke(); can.font = "12px Arial"; //設定字型填充顏色 can.fillStyle = color[i]; // can.fillText(string,x,y,maxWidth); can.fillText(data[i], 88 + 2 * i * 50, 350 - data[i] - 5, 50); } } // 初始化 function init() { drawBone(); var data = new Array(); var color = new Array(); $("#btn").click(function () { // 獲取隨機顏色 // 1、16777215為16進位制的顏色ffffff轉成10進位制的數字 // 2、>>數字取整 // 3、轉成16進位制不足6位的以0來補充 if (data.length < 6) { var color_random = "#" + ("00000" + ((Math.random() * 16777215 + 0.5) >> 0).toString(16)).slice(-6); color.push(color_random); var value = $("#val").val(); if (value <= 300 && value >= 0) { data.push(value); drawPic(data, color); // console.log(data); // console.log(data.length); $("#val").val(""); } else { alert("請輸入0-300以內的數字"); $("#val").val(""); } } else { alert("最多輸入6個資料"); } }); // 回車事件 $("body").keydown(function () { if (event.keyCode == "13") {//keyCode=13是Enter鍵 $('#btn').click(); } }); } //頁面載入時執行init()函式 window.onload = init; </script> </head> <body> <p>輸入數值後按確定或者回車</p> <p> <canvas id="canvas" width="700" height="400" style="border:2px solid #0026ff;" class="canvas"></canvas> </p> <div class="text"> 數值:<input type="text" id="val" class="val" placeholder="輸入數值後按回車"> <div id="btn" class="btn">確定</div> </div> </body> </html>
相關文章
- Echarts:10-5-2:柱狀圖(座標軸刻度與標籤對齊)Echarts
- R繪圖(06)——帶errorbar的柱狀圖繪圖ErrorORB
- 繪製帶誤差分析的柱狀圖
- Android 自定義帶動畫的柱狀圖Android動畫
- 用Flutter的Canvas來自己繪製柱狀頻譜圖FlutterCanvas
- 柱狀圖
- canvas繪製帶有漸變效果的直線Canvas
- 九、柱狀圖和3D柱狀圖3D
- canvas 座標系原點Canvas
- canvas座標系原點Canvas
- 流體力學守恆形式Euler方程(笛卡爾座標、柱座標、球座標)
- PyQtGraph之柱狀圖QT
- oracle 柱狀圖(Histograms)OracleHistogram
- CSS3 - vue中純css實現柱狀圖表效果CSSS3Vue
- 資料視覺化:圖表篇(1)—— 基本柱狀圖、堆疊柱狀圖視覺化
- 【matplotlib 實戰】--柱狀圖
- Echarts立體柱狀圖Echarts
- JavaScript介面畫柱狀圖JavaScript
- Echarts根據資料長度變換柱狀圖柱狀的顏色Echarts
- Quart2D 畫圖二 (餅狀圖、柱狀圖)
- 84. 柱狀圖中最大的矩形
- 垂直柱狀圖(模擬+字串)字串
- Echarts 柱狀圖配置詳解Echarts
- canvas-座標系、圓角矩形、紋理、剪裁Canvas
- LeetCode_84.柱狀圖中最大的矩形LeetCode
- echarts 設定柱狀圖寬度Echarts
- 柱狀圖與執行計劃
- echarts 柱狀圖如何橫向展示Echarts
- 使用 Flutter 繪製圖表(一)柱狀圖?Flutter
- python-資料分析-Matplotlib-1-基礎圖形(曲線圖-散點-柱狀-堆疊柱狀-餅狀圖-直方圖)Python直方圖
- jQuery頂部帶有選項卡的焦點圖效果jQuery
- Canvas(3)---繪製餅狀圖Canvas
- 柱狀圖、直方圖、散點圖、餅圖講解直方圖
- amCharts繪製折線圖和柱狀圖混合
- MPAndroidChart繪製曲線圖、柱狀圖總結Android
- echarts 柱狀圖 詳解與使用集合Echarts
- 力扣LCR 039. 柱狀圖中最大的矩形力扣
- 用Python生成柱狀圖、折線圖、餅狀圖來統計自己的手機話費Python