Create multiple charts
It can be useful to draw multiple charts in a single picture. Some things like scaling need to be taken in consideration.
While invoking the drawScale() function the chart area coordinates are computed including the maximum and minimum values
of the dataset.
|
 |
Before drawing another chart you must call the clearScale() function. |
|
Drawing multiple chart with a single Data set
This example is showing how to draw multiple charts in a single picture using the same dataset.
- We are drawing the stacked bar chart using an automatic scale including a left & right border. Nothing
new here, everything is done like when rendering a simple chart.
- Then we are clearing the scale calling the clearScale() function of the pChart class. This
will reset all the dynamically computed variables (YStep,XStep, Margins,..)
- We redefine the graph area calling the setGraphArea() function of the pChart class.
- We draw the second chart.
It can be quite convenient to draw the same dataset with different chart type to highlight specific
values or series. As the dataset is the same for the two chart, invoking the drawLegend legend
function will write the accurate legend that will be the same for all the charts.
The sourcecode :
|
|
 |
<?php
// Standard inclusions
include("pChart/pData.class");
include("pChart/pChart.class");
// Dataset definition
$DataSet = new pData;
$DataSet->AddPoint(array(1,2,5),"Serie1");
$DataSet->AddPoint(array(3,2,2),"Serie2");
$DataSet->AddPoint(array(3,4,1),"Serie3");
$DataSet->AddPoint(array("A#~1","A#~2","A#~3"),"Labels");
$DataSet->AddAllSeries();
$DataSet->RemoveSerie("Labels");
$DataSet->SetAbsciseLabelSerie("Labels");
$DataSet->SetSerieName("Alpha","Serie1");
$DataSet->SetSerieName("Beta","Serie2");
$DataSet->SetSerieName("Gama","Serie3");
$DataSet->SetXAxisName("Samples IDs");
$DataSet->SetYAxisName("Test Marker");
$DataSet->SetYAxisUnit("µm");
// Initialise the graph
$Test = new pChart(380,400);
$Test->drawGraphAreaGradient(132,153,172,100,TARGET_BACKGROUND);
// Graph area setup
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->setGraphArea(110,180,350,360);
$Test->drawGraphArea(213,217,221,FALSE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,213,217,221,TRUE,0,2,TRUE);
$Test->drawGraphAreaGradient(162,183,202,50);
$Test->drawGrid(4,TRUE,230,230,230,20);
// Draw the title
$Title = " Average growth size for selected\r\n DNA samples ";
$Test->setLineStyle(2);
$Test->drawLine(41,-2,41,402,0,0,0);
$Test->setLineStyle(1);
$Test->drawTextBox(0,0,40,400,$Title,90,255,255,255,ALIGN_BOTTOM_CENTER,TRUE,0,0,0,30);
// Draw the bar graph
$Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),50);
// Second chart
$DataSet->SetXAxisName("");
$Test->clearScale();
$Test->setGraphArea(110,20,350,140);
$Test->drawGraphArea(213,217,221,FALSE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,213,217,221,TRUE,0,2);
$Test->drawGraphAreaGradient(162,183,202,50);
$Test->drawGrid(4,TRUE,230,230,230,20);
// Draw the line chart
$Test->drawFilledCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription(),.1,40);
// Write the legend
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->drawLegend(5,5,$DataSet->GetDataDescription(),236,238,240,52,58,82);
// Finish the graph
$Test->addBorder(1);
$Test->Render("MyPicture.png");
?>
|
 |
Last updated on 08/26/2008 |