guess you already had the Idea of this class. It create a Dynamic Bar Chart of your Dynamic Report, This class can be used for Finance Report, Site Log Report, or any other application that need Bar Chart Auto Generation
By : hermawan
<?php /*** Class Name : easyChart Class Purpose : Create Simple Bar Chart for Statistic Input : Retrieved Data from DB Author : Hermawan Haryanto Email : hermawan@codewalkers.com Website : http://hermawan.com Create Date: Sept 28 2001 Update Date: Nov 27 2002 ***/ class easyChart { var $title; var $width; var $height; var $bartitle; var $barheight; var $barwidth; var $background; var $multiply; var $spacebar; var $leftspace; var $rightspace; var $upspace; var $bottomspace; var $leftlegend; var $linecolor; var $barcolor; var $titlecolor; var $legendcolor; var $barinfocolor; function easyChart () { $this->title = "Chart Title"; $this->background = Array(153,204,102); $this->linecolor = Array(240,240,240); $this->barcolor = Array(255,255,153); $this->titlecolor = Array(111,166,55); $this->legendcolor = Array(0,0,0); $this->barinfocolor = Array(0,0,0); $this->width = 600; $this->height = 500; $this->barwidth = 20; $this->leftspace = 75; $this->rightspace = 25; $this->upspace = 50; $this->bottomspace = 50; $this->leftlegend = 10; $this->chartlegend = "UG93ZXJlZCBieTogSGVyb"; } function setTitleColor ($color) { $this->titlecolor = explode(",",$color); } function setLegendColor ($color) { $this->legendcolor = explode(",",$color); } function setBarInfoColor ($color) { $this->barinfocolor = explode(",",$color); } function setBarColor ($color) { $this->barcolor = explode(",",$color); } function setLineColor ($color) { $this->linecolor = explode(",",$color); } function setLeftLegend ($leftlegend) { $this->leftlegend = $leftlegend; } function setLeftSpace ($leftspace) { $this->leftspace = $leftspace; } function setRightSpace ($rightspace) { $this->rightspace = $rightspace; } function setTitle ($title) { $this->title = $title; } function setBackground ($color) { $this->background = explode (",", $color); } function setWidth ($width) { $this->width = $width; } function setHeight ($height) { $this->height = $height; } function setBarWidth ($barwidth) { $this->barwidth = $barwidth; } function addBar ($bartitle, $barheight) { $this->bartitle[] = $bartitle; $this->barheight[] = $barheight; } function prepare() { $this->chartlegend .= "WF3YW4gSGFyeWFudG8gZWFzeUNoYXJ0LmNs"; $arr = $this->barheight; sort ($arr); reset ($arr); $this->highestvalue = end($arr); $this->valueincriement = $this->highestvalue / $this->leftlegend; $this->multiply = ( ($this->height-($this->upspace + $this->bottomspace)) / $this->highestvalue); $this->spacebar = ( ($this->width - ($this->leftspace + $this->rightspace)) - ($this->barwidth * count($arr) ) ) / (count($arr)+1); $this->legendspace = ($this->height - ($this->upspace+$this->bottomspace)) / $this->leftlegend; if ($this->barwidth * count($this->barheight) > ($this->width-($this->upspace+$this->bottomspace))) $err = "Bar width is to large"; if ($err!="") { print $err; exit; } } function generateChart() { $im = ImageCreate($this->width,$this->height); $white = ImageColorAllocate($im,255,255,255); $background = ImageColorAllocate($im,$this->background[0],$this->background[1],$this->background[2]); $black = ImageColorAllocate($im,0,0,0); $gray = ImageColorAllocate($im,100,100,100); $linecolor = ImageColorAllocate($im,$this->linecolor[0],$this->linecolor[1],$this->linecolor[2]); $barcolor = ImageColorAllocate($im,$this->barcolor[0],$this->barcolor[1],$this->barcolor[2]); $titlecolor = ImageColorAllocate($im,$this->titlecolor[0],$this->titlecolor[1],$this->titlecolor[2]); $legendcolor = ImageColorAllocate($im,$this->legendcolor[0],$this->legendcolor[1],$this->legendcolor[2]); $barinfocolor = ImageColorAllocate($im,$this->barinfocolor[0],$this->barinfocolor[1],$this->barinfocolor[2]); @ImageFilledRectangle($im,0,25,$this->width,$this->height-15,$background); @ImageFilledRectangle($im,1,26,$this->width-2,$this->height-16,$white); @ImageFilledRectangle($im,2,27,$this->width-3,$this->height-17,$background); @ImageFilledRectangle($im,$this->leftspace,$this->upspace-10,$this->width-$this->rightspace,$this->height-($this->bottomspace-20),$white); $titlewidth = strlen($this->title) * ImageFontWidth(5); $titlexpos = ($this->width - $titlewidth)/2; @ImageString ($im, 5, $titlexpos, 5, $this->title, $titlecolor); @ImageString ($im, 1, 0, $this->height - 10, base64_decode($this->chartlegend."YXNzIC0gaHR0cDovL2hlcm1hd2FuLmRtb25zdGVyLmNvbSAtIEdQTA=="), $black); for($i=0;$i<=$this->leftlegend;$i++){ $legendx = 5; $legendy = $this->upspace + ($this->legendspace * $i) - 6; @ImageString($im, 2, $legendx, $legendy, $this->highestvalue-($this->valueincriement*$i), $legendcolor); @ImageLine ($im, $this->leftspace, $legendy+6, $this->width - $this->rightspace, $legendy+6, $linecolor); } for($i=0;$i<count($this->barheight);$i++){ $j=$i+1; $x1 = ($j * $this->spacebar) + ($i * $this->barwidth) + $this->leftspace; $y1 = $this->height - ($this->barheight[$i]*$this->multiply) - $this->upspace; $x2 = $x1 + $this->barwidth; $y2 = $this->height - $this->bottomspace; $bartitlewidth = strlen($this->bartitle[$i]) * ImageFontWidth(2); $centerofbar = $x1 + ($this->barwidth / 2); $bartitlex = $centerofbar - ($bartitlewidth/2); $bartitley = $y2 + 5; @ImageFilledRectangle($im, $x1, $y1, $x2, $y2, $barcolor); @ImageString($im, 2, $bartitlex, $bartitley, $this->bartitle[$i], $barinfocolor); } @ImageJPEG($im); @ImageDestroy($im); } };
// HERE IS THE EXAMPLE TO USE THE CHART CLASS $chart = new easyChart(); // Object initialized $chart->setTitle("This is my Bar Chart Title"); // Title of Chart $chart->setBackground("153,204,102"); // Background of chart [opt] $chart->setLineColor("225,225,225"); // Line color separator [opt] $chart->setBarColor("255,255,153"); // Bar color [opt] $chart->setTitleColor("111,166,55"); // Color Title [opt] $chart->setLegendColor("0,0,0"); // Legend Color [opt] $chart->setBarInfoColor("0,0,0"); // Bar Info Color [opt] $chart->setWidth(600); // Width of Chart $chart->setHeight(500); // Height of Chart $chart->setBarWidth(20); // Bar Width $chart->setLeftSpace(75); // Left Space $chart->setRightSpace(25); // Right Space $chart->setLeftLegend(10); // Left Legend
DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.