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
Line graph
Cubic curve graph
Bar Graph
Stacked Bar Graph
Overlay Bar graph
Line + Area
Limits graph
Filled line graph
Filled cubic graph
Radar graph
Basic Pie graph
Exploded Pie graph
3D Pie graph
Scatter charts
Advanced Examples
Example #4 - Creating a line graph with a greyed area

This example shows how to create a line graph on top of a greyed area. To achieve this example we need to have 3 data series : 2 are used for the max/min values of the area and 1 for the line graph itself. The area is drawn using the drawArea() function giving the color & the alpha transparency level. To draw only one serie calling the drawLineGraph() we must first remove the 2 others used by the area with the RemoveSerie() function. The graph function called is drawBarGraph() without extended parameters. Running this script will create a example4.png file in the current directory.

Output :


Note on the dataset

Data are retrieved from a CSV file named datawithtitle.csv. This file contains 4 colums : Column 0 is used as index, Column 1-2-3 are used as data series. This file does contains a header defining series name.

Click here to download datawithtitle.csv

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

  // Dataset definition 
  $DataSet = new pData;
  $DataSet->ImportFromCSV("Sample/datawithtitle.csv",",",array(1,2,3),TRUE,0);
  $DataSet->AddSerie("Serie2");
  $DataSet->SetAbsciseLabelSerie();
  $DataSet->removeSerieName("Serie1");
  $DataSet->removeSerieName("Serie3");

  // Initialise the graph
  $Test = new pChart(700,230);
  $Test->setFontProperties("Fonts/tahoma.ttf",8);
  $Test->setGraphArea(60,30,680,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 area
  $Test->drawArea($DataSet->GetData(),"Serie1","Serie3",239,238,227,50);

  // Draw the line graph
  $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
  $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255);

  // Finish the graph
  $Test->setFontProperties("Fonts/tahoma.ttf",8);
  $Test->drawLegend(65,35,$DataSet->GetDataDescription(),250,250,250);
  $Test->setFontProperties("Fonts/tahoma.ttf",10);
  $Test->drawTitle(60,22,"Example 4",50,50,50,585);
  $Test->Render("example4.png");
 ?>
 
If you want to send the picture directly in a browser, replace the Render() command by Stroke().


Last updated on 05/15/2008