The chart in the example is created by combining a line layer with a box-whisker layer.
The blue line and the yellow diamond symbols are from the line layer, creating using
XYChart.addLineLayer2,
Layer.addDataSet, and
DataSet.setDataSymbol.
The brown error marks belong to the box-whisker layer, created using
XYChart.addBoxWhiskerLayer. The data for the box and median parts of the box- whisker layer are set to empty arrays, so only the maximum and minimum marks are visible.
The maximum and minimum marks in this example is computed by adding/subtracting the error value to/from the data value using a ChartDirector utility class
ArrayMath.
[File: phpdemo/errline.php".]
setSearchPath(dirname(__FILE__));
#Set the plotarea at (55, 45) and of size 520 x 205 pixels, with white
#background. Turn on both horizontal and vertical grid lines with light grey
#color (0xc0c0c0)
$c->setPlotArea(55, 45, 520, 210, 0xffffff, -1, -1, 0xc0c0c0, 0xc0c0c0);
#Add a title box to the chart using 13 pts Arial Bold Italic font. The title is
#in CDML and includes embedded images for highlight. The text is white
#(0xffffff) on a black background, with a 1 pixel 3D border.
$titleObj = $c->addTitle(
"<*block,valign=absmiddle*><*img=star.png*><*img=star.png*> Molecular ".
"Temperature Control <*img=star.png*><*img=star.png*><*/*>", "arialbi.ttf",
13, 0xffffff);
$titleObj->setBackground(0x0, -1, 1);
#Add a title to the y axis
$c->yAxis->setTitle("Temperature");
#Add a title to the x axis using CMDL
$c->xAxis->setTitle(
"<*block,valign=absmiddle*><*img=clock.png*> Elapsed Time (hour)<*/*>");
#Set the labels on the x axis
$c->xAxis->setLabels($labels);
#Set the axes width to 2 pixels
$c->xAxis->setWidth(2);
$c->yAxis->setWidth(2);
#Add a line layer to the chart
$lineLayer = $c->addLineLayer2();
#Add a blue (0xff) data set to the line layer, with yellow (0xffff80) diamond
#symbols
$dataSetObj = $lineLayer->addDataSet($data, 0xff);
$dataSetObj->setDataSymbol(DiamondSymbol, 12, 0xffff80);
#Set the line width to 2 pixels
$lineLayer->setLineWidth(2);
#Add a box whisker layer to the chart. Use the upper and lower mark of the box
#whisker layer to act as error zones. The upper and lower marks are computed
#using the ArrayMath object.
$upperMark = new ArrayMath($data);
$upperMark->add($errData);
$lowerMark = new ArrayMath($data);
$lowerMark->sub($errData);
$errLayer = $c->addBoxWhiskerLayer(null, null, $upperMark->result(),
$lowerMark->result(), $data, Transparent, 0xbb6633);
#Set the line width to 2 pixels
$errLayer->setLineWidth(2);
#Set the error zone to occupy half the space between the symbols
$errLayer->setDataGap(0.5);
#Add a custom CDML text at the bottom right of the plot area as the logo
$textObj = $c->addText(575, 255,
"<*block,valign=absmiddle*><*img=small_molecule.png*> <*block*>".
"<*font=timesbi.ttf,size=10,color=804040*>Molecular\nEngineering<*/*>");
$textObj->setAlignment(BottomRight);
#output the chart
header("Content-type: image/png");
print($c->makeChart2(PNG));
?> |
© 2004 Advanced Software Engineering Limited. All rights reserved.