ChartDirector Ver 3.1 (PHP Edition Edition)

Y-Axis Scaling


        

This example illustrates how to control scaling of an axis.

By default, ChartDirector will auto-scaled all axes. The Axis.setAutoScale method controls the top extension, bottom extension and the zero affinity parameters that ChartDirector uses during auto-scaling. The first three charts demonstrates the effects of different top/bottom extensions. (Please refer to Axis.setAutoScale on what these parameters mean.)

The fourth chart demonstrates that one could exclude a segment on the ends of an axis from scaling using Axis.setMargin.

The fifth chart demonstrates using manual scaling instead of auto-scaling. A manual linear scale can be configured using Axis.setLinearScale or Axis.setLinearScale2. ChartDirector also supports Axis.setLogScale, Axis.setLogScale2, Axis.setDateScale and Axis.setDateScale2 for configuring manual log and date scales.

Source Code Listing

[File: phpdemo/axisscale.php".]
<?php require_once("../lib/phpchartdir.php"); #The data for the chart $data = array(5.5, 3.5, -3.7, 1.7, -1.4, 3.3); $labels = array("Jan", "Feb", "Mar", "Apr", "May", "Jun"); #Create a XYChart object of size 200 x 180 pixels $c = new XYChart(200, 180); #Set the plot area at (30, 20) and of size 140 x 130 pixels $c->setPlotArea(30, 20, 140, 130); #Configure the axis as according to the input parameter if ($HTTP_GET_VARS["img"] == "0") { $c->addTitle("No Axis Extension", "arial.ttf", 8); } else if ($HTTP_GET_VARS["img"] == "1") { $c->addTitle("Top/Bottom Extensions = 0/0", "arial.ttf", 8); #Reserve 20% margin at top of plot area when auto-scaling $c->yAxis->setAutoScale(0, 0); } else if ($HTTP_GET_VARS["img"] == "2") { $c->addTitle("Top/Bottom Extensions = 0.2/0.2", "arial.ttf", 8); #Reserve 20% margin at top and bottom of plot area when auto-scaling $c->yAxis->setAutoScale(0.2, 0.2); } else if ($HTTP_GET_VARS["img"] == "3") { $c->addTitle("Axis Top Margin = 15", "arial.ttf", 8); #Reserve 15 pixels at top of plot area $c->yAxis->setMargin(15); } else { $c->addTitle("Manual Scale -5 to 10", "arial.ttf", 8); #Set the y axis to scale from -5 to 10, with ticks every 5 units $c->yAxis->setLinearScale(-5, 10, 5); } #Set the labels on the x axis $c->xAxis->setLabels($labels); #Add a color bar layer using the given data. Use a 1 pixel 3D border for the #bars. $barLayer3Obj = $c->addBarLayer3($data); $barLayer3Obj->setBorderColor(-1, 1); #output the chart header("Content-type: image/png"); print($c->makeChart2(PNG)); ?>


/td>setLogScale2(Self)Set the axis to use the given logarithmic scale and the given labels.setLogScale3(Self)Set the axis to use logarithmic auto-scale.setDateScale(Self)Set the axis to use the given date scale.setDateScale2(Self)Set the axis to use the given date scale and the given labels.setDateScale3(Self)Set the axis to use date auto-scale.addLabel(Self)Add an extra label on the axis.addMark(Self)Add a mark line to the chart.addZone(Self)Add a zone to the chart.getMinValue(Self)Get the lower bound of the axis.getMaxValue(Self)Get the upper bound of the axis.getTicks(Self)Get the values of the ticks.
ovAvg(Self)Replace each element of the ArrayMath object by its moving average.expAvg(Self)Replace each element of the ArrayMath object by its exponential average.movMed(Self)Replace each element of the ArrayMath object by its moving median.movPercentile(Self)Replace each element of the ArrayMath object by its moving percentile.movMax(Self)Replace each element of the ArrayMath object by its moving maximum.movMin(Self)Replace each element of the ArrayMath object by its moving minimum.movStdDev(Self)Replace each element of the ArrayMath object by its moving standard deviation.movCorr(Self)Replace each element of the ArrayMath object by the moving correlation with another array or with itself.lowess(Self)Fit a curve through the data points in the ArrayMath object using the LOWESS algorithm.lowess2(Self)Fit a curve through the data points in the ArrayMath object using the LOWESS algorithm, where the spacing of the data points is supplied by the given array.result(Self)Get the content of the ArrayMath object as a normal array to be used in other ChartDirector API.max(Self)Get the maximum value of the elements of the ArrayMath object.min(Self)Get the minimum value of the elements of the ArrayMath object.avg(Self)Get the average value of the elements of the ArrayMath object.sum(Self)Get the total value of the elements of the ArrayMath object.med(Self)Get the median value of the elements of the ArrayMath object.percentile(Self)Get the required percentile value of the elements of the ArrayMath object.maxIndex(Self)Get the index of the maximum value element of the ArrayMath object.minIndex(Self)Get the index of the minimum value element of the ArrayMath object.
(1059, '1999-03-01', '371', '635', '722');