zoukankan      html  css  js  c++  java
  • js canvas画柱状图 没什么高端的 就是一篇偶尔思路的

    公司项目要用js画柱状图,本来想用个插件吧 chart.js 忽然一想 我们也用不了那么大的插件。自己写个吧,也能看看自己那点数学水平能够不!


    有几个小亮点吧

    1.函数x 和 函数y 对坐标进行了转化 假设以画布的左上角为原点 那算起来真是太坑爹了

    2.画矩形用画粗线 ,哎呀 那个画矩形那四个点真是要命啊 ,还是画线实在!

    抛砖引玉一下。大神勿喷!


    <!DOCTYPE html>
    <html> 
    <head>
    <meta charset="utf-8">
    <title>报告结果</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <style> 
    body{text-align:center;} 
    #canvas{300px;margin:0 auto;}
    </style>
    <canvas id="canvas" width="300" height="300"></canvas>
    <script type="text/javascript">
    	var canvas = document.getElementById('canvas');
    	var cx = canvas.getContext('2d');
    	/*
    	var x_width = 300;
    	var y_width = 300;
    	var x_left = 50;
    	var x_right = 230;
    	var y_up_top = 50;
    	var y_up_bottom = 150;
    	var y_down = 80; 
    	*/
    	draw();
    	function draw() {
    		//轴
    		drawLine(-50,0,250,0,0.5,'#999999');
    		drawLine(0,200,0,-80,0.5,'#999999');
    		//刻度
    		for(var i=2;i<=10;i=i+2){
    			cx.fillText(i,x(-15),y(g(i))+10);
    			drawLine(-50,g(i),250,g(i),0.5,'#f0f0f0');
    		}
    		//第一个线
    		var color = ['#ffbfab','#fee17b','#effe87','#c2f3a1','#effe87'];
    		var grades = [7,8,6,10,8];
    		for(var i=20,j=0;j<5;j++,i=i+8){
    			drawLine(i,0,i,g(grades[j]),8,color[j]); 
    		}
    		var grades = [6,7,6,9,8];
    		for(var i=80,j=0;j<5;j++,i=i+8){
    			drawLine(i,0,i,g(grades[j]),8,color[j]); 
    		}
    		var grades = [5,7,5,1,8];
    		for(var i=140,j=0;j<5;j++,i=i+8){
    			drawLine(i,0,i,g(grades[j]),8,color[j]); 
    		}
    		var grades = [5,7,5,7,8];
    		for(var i=200,j=0;j<5;j++,i=i+8){
    			drawLine(i,0,i,g(grades[j]),8,color[j]); 
    		}
    		
    	}
    	function x(x){
    		return x+50;
    	}
    	function y(y){
    		return 200-y;
    	}
    	function g(grade){
    		return 15*grade;
    	}
    	
    	//画线
    	function drawLine(b_x,b_y,e_x,e_y,width,color){
    		cx.strokeStyle = color;
    		cx.lineWidth = width;
    		cx.beginPath();
    		cx.moveTo(x(b_x),y(b_y));
    		cx.lineTo(x(e_x),y(e_y));
    		cx.closePath();
    		cx.stroke();
    	}
    	
    </script>
    </body>
    </html>




  • 相关阅读:
    Java 9将采用新的版本字符串格式
    Hadoop单机伪分布式
    Hadoop JAVA 开发说明
    Java 批量插入数据(Oracle)
    Myeclipse 的hadoop环境搭建
    [LeetCode] 136. Single Number 单独数
    [LeetCode] 89. Gray Code 格雷码
    [LeetCode] 209. Minimum Size Subarray Sum 最短子数组之和
    [LeetCode] 211. Add and Search Word
    [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6809788.html
Copyright © 2011-2022 走看看