Thursday, April 11, 2013

Line graph using php



I this blog I am sharing a simple code to draw a line graph using php. Here I am using a value_array to hold my data for drawing the graph. If  we wants to draw the graph based on records  from database just replace the values of $value_array. Here I’m assumed that there is only 12 in that array.
$value_array=array();
$value_array[1] = 3500;
$value_array[2] = 2000;
$value_array[3] = 5000;
$value_array[4] = 500;
$value_array[5] = 2500;
$value_array[6] = 5;
$value_array[7] = 4250;
$value_array[8] = 1110;
$value_array[9] = 3720;
$value_array[10] = 1190;
$value_array[11] = 2670;
$value_array[12] = 440;
$array_count=count($value_array);
                $imagewd=600; //X value
                $imageht=550; //Y value
                $image=imagecreate($imagewd,$imageht);
                $colo=imagecolorallocate($image,55,55,55);
                $drcol=imagecolorallocate($image,00,00,00);
                $graph_col=imagecolorallocate($image,00,00,255);
                $text_color=imagecolorallocate($image,00,200,20);
                //-------------Horizontal Lines----------------------------------------------
                $cord1 = 50;
                while($cord1<=500){
                                imageline($image,0,$cord1,900,$cord1,$drcol);
                                $cord1 = $cord1+50;
                                }
//-------------End Horizontal Lines------------------------------------------
//-------------Vertical Lines------------------------------------------------
                $cord2 = 50;
                while($cord2<=600){
                                imageline($image,$cord2,0,$cord2,600,$drcol);
                                $cord2 = $cord2+50;
                                }
//-------------End Vertical Lines-------------------------------------------
$x1=0;
$y1=550;
$x2=0;
$y2=0;
imagesetthickness($image,3);//code changing thickness of graph
//Drawing Graph depending upon values---------------------
                for($i=1;$i<=$array_count;$i++){
                                $graph_value=$value_array[$i]*50/500;
                                $x2=$x1+50;
                                $y2=550-$graph_value;
                                imageline($image,$x1,$y1,$x2,$y2,$graph_col);
                                imagestring($image,4,$x2-10,$y2-13,$value_array[$i],$text_color); //Printing value's of each points
                                $x1=$x2;
                                $y1=$y2;
                }
                header("content-Type:image/jpeg");
                imagejpeg($image);
                imagedestroy($image);    
?>

I used following code to embed this graph to my html page.
                          
                                
                                                
                                                               
                                                                
                                                                                5000
                                                                                
                                                                
                                                                
                                                                                4500
                                                                                
                                                                
                                                                
                                                                                4000
                                                                                
                                                                
                                                                
                                                                                3500
                                                                                
                                                                
                                                                
                                                                                3000
                                                                                
                                                                
                                                                
                                                                                2500
                                                                                
                                                                
                                                                
                                                                                2000
                                                                                
                                                                
                                                                
                                                                                1500
                                                                                
                                                                
                                                                
                                                                                1000
                                                                                
                                                                
                                                                
                                                                                500
                                                                                
                                                                
                                                
                                
                                
                                                
                                
                
                
                                
                                
                                
                                                
                                                                
                                                                                
                                                                                
                                                                                
                                                                                jan
                                                                                
                                                               
                                                                                
                                                                                feb
                                                                                
                                                               
                                                                                
                                                                                mar
                                                                                
                                                               
                                                                                
                                                                                apr
                                                                                
                                                               
                                                                                
                                                                                may
                                                                                
                                                               
                                                                                
                                                                                jun
                                                                                
                                                               
                                                                                
                                                                                jul
                                                                                
                                                               
                                                                                
                                                                                aug
                                                                                
                                                               
                                                                                
                                                                                sep
                                                                                
                                                                                
                                                                                oct
                                                                                
                                                                                
                                                                                nov
                                                                                
                                                                                
                                                                                dec
                                                                                
                                                                
                                                
                                
                

0 comments :

Post a Comment

 
Powered by Blogger