canvas绘制折线图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <canvas id="ca" width="300" height="300"></canvas>
  <br>随机绘制折线图按钮:
<button id="btn">重新绘制</button> <script> var uriage = [80, 92, 104, 110, 68, 50, 45, 90, 74, 68, 98, 103]; window.onload = function(){ drawChart(shuffle(uriage)); } _$('btn').addEventListener('click', function(){ drawChart(shuffle(uriage)); }, false); function drawChart(data){ var a_canvas = _$('ca'); var ctx = a_canvas.getContext('2d'); var gradient = ctx.createLinearGradient(0, 0, 0, 300); gradient.addColorStop(0, '#e0e0e0'); gradient.addColorStop(1, '#ffffff'); ctx.fillStyle = gradient; ctx.fillRect(0, 0, a_canvas.width, a_canvas.height); var grid_cols = data.length + 1; var grid_rows = 4; var cell_width = a_canvas.width / grid_cols; var cell_height = a_canvas.height / grid_rows; ctx.beginPath(); for(var row = 0; row <= grid_rows; row++){ var y = row * cell_height; ctx.moveTo(0, y); ctx.lineTo(a_canvas.width, y); } for(var col = 0; col <= grid_cols; col++){ var x = col * cell_width; ctx.moveTo(x, 0); ctx.lineTo(x, a_canvas.height); } ctx.lineWidth = 1; ctx.strokeStyle = '#c0c0c0'; ctx.stroke(); var max_v = 0; for(var i = 0; i < data.length; i++){ if(data[i] > max_v) max_v = data[i]; } max_v = max_v * 1.1; var points = []; for(var i = 0; i < data.length; i++){ var v = data[i]; var px = cell_width * (i + 1); var py = a_canvas.height - a_canvas.height * (v / max_v); points.push({ 'x': px, 'y': py }); } for(var i = 0; i < points.length; i++){ ctx.beginPath(); ctx.arc(points[i]['x'], points[i]['y'], 2, 0, 2*Math.PI); ctx.fillStyle = '#00ff00' ctx.fill(); } ctx.beginPath(); ctx.moveTo(points[0]['x'], points[0]['y']); for(var i = 0; i < points.length; i++){ ctx.lineTo(points[i]['x'], points[i]['y']); ctx.lineWidth = 2; ctx.strokeStyle = '#ee0000'; ctx.stroke(); } } function shuffle(arr){ if(Object.prototype.toString.call(arr) !== '[object Array]') return; var len = arr.length - 1, index = null; while(len > 0){ index = Math.floor(len * Math.random()); arr[len] = [ arr[index], arr[index]=arr[len] ][0]; len--; } return arr; } function _$(anchor){ if(typeof anchor !== 'string') return; return document.getElementById(anchor); } </script> </body> </html>

 

转载于:https://www.cnblogs.com/dhygzh/p/4815252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值