SourceForge.net  |  Sunyday.net
Last release: 1.27d
a PHP Class to build Charts
pChart 2.x is born, you can start moving your script to this new version. The new website is at www.pchart.net.
Overview  |  Screenshots  |  Download  |  Add-ons  |  Demonstration  |  Support  |  :: Documentation ::
Documentation Contents
Overview
Class definition
FAQ
Digging with pChart
Basic Examples
Advanced Examples
Graphs labels
Small "Fast Graphs"
Using pCache
Line style, Pics inclusion
Importing CSV data
Error reporting
Missing values
Playing with axis formats
Playing with backgrounds
High quality graphics
Customizing plot charts
2nd Y axis and shadows
Example #12 - Using pCache for live charting

This example shows how to use the pCache class to enhance graph rendering time. Data used to build the graph are static in this example, this will probably be not the case in your application : replace the pData stuff with your own. The unique ID associated to this chart is Graph1, it is needed for the pCache library to get only cached files associated to this script.

After filling the pData structure we're invoking the GetFromCache function. If a cached copy already exists, it is sent to the user browser and the script is interrupted meaning that all the following lines will never be executed.

If the graph isn't in the cache, the chart is created, drawn and then pushed to the cache using the WriteToCache function. Calling this function is mandatory for the cache to be available the next time an user will request the same chart.

Running this script will send the picture directly to the user browser. Don't run it in from command line!



Source code :
 <?php
 // Standard inclusions   
 include("pChart/pData.class");
 include("pChart/pChart.class");
 include("pChart/pCache.class");

 // Dataset definition 
 $DataSet = new pData;
 $DataSet->AddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1");
 $DataSet->AddPoint(array(1,4,2,6,2,3,0,1,5,1,2,4,5,2,1,0,6,4,2),"Serie2");
 $DataSet->AddAllSeries();
 $DataSet->SetAbsciseLabelSerie();
 $DataSet->SetSerieName("January","Serie1");
 $DataSet->SetSerieName("February","Serie2");

 // Cache definition 
 $Cache = new pCache();
 $Cache->GetFromCache("Graph1",$DataSet->GetData());

 // Initialise the graph
 $Test = new pChart(700,230);
 $Test->setFontProperties("Fonts/tahoma.ttf",8);
 $Test->setGraphArea(50,30,585,200);
 $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
 $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
 $Test->drawGraphArea(255,255,255,TRUE);
  $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2);   
 $Test->drawGrid(4,TRUE,230,230,230,50);

 // Draw the 0 line
 $Test->setFontProperties("Fonts/tahoma.ttf",6);
 $Test->drawTreshold(0,143,55,72,TRUE,TRUE);

 // Draw the cubic curve graph
 $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription());

 // Finish the graph
 $Test->setFontProperties("Fonts/tahoma.ttf",8);
 $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255);
 $Test->setFontProperties("Fonts/tahoma.ttf",10);
 $Test->drawTitle(50,22,"Example 1",50,50,50,585);

 // Render the graph
 $Cache->WriteToCache("Graph1",$DataSet->GetData(),$Test);
 $Test->Stroke();
 ?>
 
Using the cache work only for graphs that are sent to the user browser using the Stroke() command.


Last updated on 06/19/2008