Using PHP GD Library Functions. we can create Bar chart in php with dynamic data,
here is my SimpleBar Chart class to create a dynamic bar chart for your projects. you can easily add any number of columns and values also you can change your color scheme on base class.
SimpleBar.class.php
Example Bar Chart
here is my SimpleBar Chart class to create a dynamic bar chart for your projects. you can easily add any number of columns and values also you can change your color scheme on base class.
![]() |
Sample Bar Chart Using SimpleBar.class.php |
SimpleBar.class.php
<?php class SimpleBar { private $xgutter = 20; // left/right margin private $ygutter = 20; // top/bottom margin private $bottomspace = 30; // gap at the bottom private $internalgap = 20; // space between bars private $cells = array(); // labels/amounts for bar chart private $totalwidth; // width of the image private $totalheight; // height of the image private $font; // the font to use function __construct( $width, $height, $font ) { $this->totalwidth = $width; $this->totalheight = $height; $this->font = $font; } function addBar( $label, $amount ) { $this->cells[ $label ] = $amount; } private function _getTextSize( $cellwidth ) { $textsize = (int)($this->bottomspace); if ( $cellwidth < 10 ) { $cellwidth = 10; } foreach ( $this->cells as $key=>$val ) { while ( true ) { $box = ImageTTFbBox( $textsize, 0, $this->font, $key ); $textwidth = abs( $box[2] ); if ( $textwidth < $cellwidth ) { break; } $textsize--; } } return $textsize; } function draw() { $image = imagecreate( $this->totalwidth, $this->totalheight ); $red = ImageColorAllocate($image, 230, 230, 230); $blue = ImageColorAllocate($image, 200, 100, 100 ); $black = ImageColorAllocate($image, 0, 100, 255 ); $max = max( $this->cells ); $total = count( $this->cells ); $graphCanX = ( $this->totalwidth - $this->xgutter*2 ); $graphCanY = ( $this->totalheight - $this->ygutter*2 - $this->bottomspace ); $posX = $this->xgutter; $posY = $this->totalheight - $this->ygutter - $this->bottomspace; $cellwidth = (int)(( $graphCanX - ( $this->internalgap * ( $total-1 ) )) / $total) ; $textsize = $this->_getTextSize( $cellwidth ); foreach ( $this->cells as $key=>$val ) { $cellheight = (int)(($val/$max) * $graphCanY); $center = (int)($posX+($cellwidth/2)); imagefilledrectangle( $image, $posX, ($posY-$cellheight), ($posX+$cellwidth), $posY, $blue ); $box = imageTTFbBox( $textsize, 0, $this->font, $key ); $tw = $box[2]; ImageTTFText( $image, $textsize, 0, ($center-($tw/2)), ($this->totalheight-$this->ygutter), $black, $this->font, $key ); $posX += ( $cellwidth + $this->internalgap); } imagepng( $image ); } } ?>
Example Bar Chart
<?php header("Content-type: image/png"); include("SimpleBar.class.php"); $graph = new SimpleBar( 500, 300, "verdana.ttf" ); $graph->addBar( "USA", 200 ); $graph->addBar( "India", 400 ); $graph->addBar( "UK", 240 ); $graph->addBar( "Australia", 170 ); $graph->addBar( "UAE", 270 ); $graph->draw(); ?>
![]() | View Demo Download Script |
what if we pass variable to the addBar Function? it will work?
ReplyDeletei tried to pass two variables one as CountryName and Other is as Country sales
i write syntax like this $graph->addBar("$Countryname", $sales) .. its first part is working correctly but not displaying sales according to the entered amount.
how can i pass amount variable? any hepl !!
The chart class is not working
ReplyDelete