setLabelMarginLeft(150); $this->setLabelMarginRight(30); $this->setLabelMarginTop(40); $this->setLabelMarginBottom(30); } /** * Print the axis * * @access private */ function printAxis() { $minValue = $this->axis->getLowerBoundary(); $maxValue = $this->axis->getUpperBoundary(); $stepValue = $this->axis->getTics(); // Horizontal axis for($value = $minValue; $value <= $maxValue; $value += $stepValue) { $x = $this->graphTLX + ($value - $minValue) * ($this->graphBRX - $this->graphTLX) / ($maxValue - $minValue); imagerectangle($this->img, $x - 1, $this->graphBRY + 2, $x, $this->graphBRY + 3, $this->axisColor1); imagerectangle($this->img, $x - 1, $this->graphBRY, $x, $this->graphBRY + 1, $this->axisColor2); $this->text->printText($this->img, $x, $this->graphBRY + 5, $this->textColor, number_format($value), $this->text->fontCondensed, $this->text->HORIZONTAL_CENTER_ALIGN); } // Vertical Axis $rowHeight = ($this->graphBRY - $this->graphTLY) / $this->sampleCount; reset($this->point); for($i = 0; $i <= $this->sampleCount; $i++) { $y = $this->graphBRY - $i * $rowHeight; imagerectangle($this->img, $this->graphTLX - 3, $y, $this->graphTLX - 2, $y + 1, $this->axisColor1); imagerectangle($this->img, $this->graphTLX - 1, $y, $this->graphTLX, $y + 1, $this->axisColor2); if($i < $this->sampleCount) { $point = current($this->point); next($this->point); $text = $point->getX(); $this->text->printText($this->img, $this->graphTLX - 5, $y - $rowHeight / 2, $this->textColor, $text, $this->text->fontCondensed, $this->text->HORIZONTAL_RIGHT_ALIGN | $this->text->VERTICAL_CENTER_ALIGN); } } } /** * Print the bars * * @access private */ function printBar() { reset($this->point); $minValue = $this->axis->getLowerBoundary(); $maxValue = $this->axis->getUpperBoundary(); $stepValue = $this->axis->getTics(); $rowHeight = ($this->graphBRY - $this->graphTLY) / $this->sampleCount; for($i = 0; $i < $this->sampleCount; $i++) { $y = $this->graphBRY - $i * $rowHeight; $point = current($this->point); next($this->point); $value = $point->getY(); $xmax = $this->graphTLX + ($value - $minValue) * ($this->graphBRX - $this->graphTLX) / ($maxValue - $minValue); $this->text->printText($this->img, $xmax + 5, $y - $rowHeight / 2, $this->textColor, $value, $this->text->fontCondensed, $this->text->VERTICAL_CENTER_ALIGN); // Horizontal bar $y1 = $y - $rowHeight * 4 / 5; $y2 = $y - $rowHeight * 1 / 5; imagefilledrectangle($this->img, $this->graphTLX + 1, $y1, $xmax, $y2, $this->barColor2); imagefilledrectangle($this->img, $this->graphTLX + 2, $y1+1, $xmax - 4, $y2, $this->barColor1); } } /** * Render the chart image * * @access public * @param string name of the file to render the image to (optional) */ function render($fileName) { $this->computeBound(); $this->computeLabelMargin(); $this->createImage(); $this->printLogo(); $this->printTitle(); $this->printAxis(); $this->printBar(); if(isset($fileName)) imagepng($this->img, $fileName); else imagepng($this->img); } } ?>