Line Graph using HTML CanvasWe will be using lines to draw graph on our Canvas. lineTo() to draw lines width and coordinates. Data Formatvar data = [120,310,450,300,200,440,500]; SettingsWe will set the variables with datavar margin_bottom=20; var margin_left=50; var data_max=Math.max.apply(null,data); // Maximum value of data available var data_min=Math.min.apply(null,data); // Minimum value of data available var data_no=data.length; // Number of data ( elements in array ) var x_gap=70; // gap in X axis between data points var range = 100; // var y_max=Math.ceil( data_max/range)* range; // Adjust the highest value for grid var y_min=Math.floor( data_min/range)* range; // Lower limit of the grid, can be set to zero.
Set height and width of canvas my_canvas.height= y_max-y_min + margin_bottom my_canvas.width= (data_no*x_gap ) + margin_leftSet X- Y Axis and Grid gctx.moveTo(margin_left,0);
gctx.lineTo(margin_left,my_canvas.height);
gctx.moveTo(0,my_canvas.height-margin_bottom);
gctx.lineTo(my_canvas.width,my_canvas.height-margin_bottom);
gctx.strokeStyle= '#f54600';
gctx.stroke();
///////Draw Grid //////////////////
gctx.font = '18px serif';
for (i=0;i<=y_max;i+=range){
gctx.fillText(i+'-', margin_left-35,y_max-i);
}
Drawing Line graph using loopWe will move to first point of the graph by using first data. Then draw the lines based on rest of the data.gctx.beginPath()
gctx.lineWidth=3;
gctx.strokeStyle= '#2369f5';
gctx.moveTo(x_gap,y_max-data[0]);
gctx.fillText(data[0], x_gap-30,y_max-data[0]);
x1=x_gap;
// drawing graph from first point
for (i=1;i<=data_no;i++){
x1=x1+x_gap;
gctx.lineTo(x1,y_max-data[i]);
gctx.fillText(data[i], x1-30,y_max-data[i]);
}
Adding shadow to graphgctx.shadowColor = '#000000'; gctx.shadowOffsetX=3; gctx.shadowOffsetY=3; gctx.shadowBlur = 3; Full Code is hereHTML Canvas<canvas id="my_canvas" width="35" height="230" style="border:2px solid #000000;"></canvas>JavaScript <script>
var data = [120,310,450,300,200,440,500];
var margin_bottom=20;
var margin_left=50;
var data_max=Math.max.apply(null,data); // Maximum value of data available
var data_min=Math.min.apply(null,data); // Minimum value of data available
var data_no=data.length; // Number of data ( elements in array )
var x_gap=70; // gap in X axis between data points
var range = 100; //
var y_max=Math.ceil( data_max/range)* range; // Adjust the highest value for grid
var y_min=Math.floor( data_min/range)* range; // Lower limit of the grid, can be set to zero.
///////// No edit //////////
//var my_canvas=$('#my_canvas').get(0) // Jquery
var my_canvas=document.getElementById("my_canvas"); // JavaScript
var gctx = my_canvas.getContext("2d");
// set the canvas height and width ///
my_canvas.height= y_max-y_min + margin_bottom
my_canvas.width= (data_no*x_gap ) + margin_left
// Draw X & Y axis //
gctx.moveTo(margin_left,0);
gctx.lineTo(margin_left,my_canvas.height);
gctx.moveTo(0,my_canvas.height-margin_bottom);
gctx.lineTo(my_canvas.width,my_canvas.height-margin_bottom);
gctx.strokeStyle= '#f54600';
gctx.stroke();
///////Draw Grid //////////////////
gctx.font = '18px serif';
for (i=0;i<=y_max;i+=range){
gctx.fillText(i+'-', margin_left-35,y_max-i);
}
// Moving to first Point of the line graph //
gctx.beginPath()
gctx.lineWidth=3;
gctx.strokeStyle= '#2369f5';
gctx.moveTo(x_gap,y_max-data[0]);
gctx.fillText(data[0], x_gap-30,y_max-data[0]);
x1=x_gap;
// drawing graph from first point
for (i=1;i<=data_no;i++){
x1=x1+x_gap;
gctx.lineTo(x1,y_max-data[i]);
gctx.fillText(data[i], x1-30,y_max-data[i]);
}
/// Adding shadow to line graph //////////////
gctx.shadowColor = 'black';
gctx.shadowOffsetX=5;
gctx.shadowOffsetY=5;
gctx.shadowBlur = 5;
gctx.stroke();
</script>
This article is written by plus2net.com team.
|