От известно време използвам един много добър пакет, служещ за изчертаване на диаграми в реално време. Пакетът се казва
jpgraph. Съществува в две версии - за PHP 4 (v1.21b) и за PHP 5 (v2.2). Ще демонстрирам неговото използване с един елементарен пример:
<?php
include ("jpgraph.php");
include ("jpgraph_bar.php");
// Някакви данни
$datay1=array(194000,231000,248000,257000,285000,315000);
$datay2=array(66000,120000,145000,176000,183000,208000);
$datay3=array(35000,66000,82000,85000,89000,93000);
$datay4=array(802,806,840,914,987,1110);
// Създава базовата диаграма
$graph = new Graph(500,500,'auto');
$graph->SetScale("textlin");
$graph->img->SetMargin(60,40,40,40);
$graph->yscale->SetGrace(11);
// Нагажда позицията на легендата
$graph->legend->Pos(0.44,0.09);
//Нагажда цвета и сянката на кутията с легендата
$graph->legend->SetShadow('darkgray@0.5');
$graph->legend->SetFillColor('lightblue@0.3');
$graph->legend->SetFont(FF_ARIAL,FS_NORMAL,9);
$graph->legend->SetHColMargin(15);
// Инициализира годините
$years=array(2001,2002,2003,2004,2005,2006);
$graph->xaxis->SetTickLabels($years);
// Инициализира картинка за фон
//$graph->SetBackgroundImage('stship.jpg',BGIMG_COPY);
// Инициализира заглавията и шрифта за осите на диаграмата
$graph->xaxis->title->Set('Година');
$graph->xaxis->title->SetFont(FF_TIMES,FS_BOLD,10);
$graph->xaxis->title->SetColor('red');
$graph->xaxis->title->SetMargin(5);
$graph->xaxis->SetFont(FF_TIMES,FS_BOLD,10);
$graph->xaxis->SetColor('black');
$graph->yaxis->SetFont(FF_TIMES,FS_BOLD,10);
$graph->yaxis->SetColor('black');
//Инициализира мрежа
$graph->ygrid->SetColor('white@0.5');
// Инициализира заглавието на диаграмата
$graph->title->Set('Показатели за дейността');
// Инициализира margin (from the top)
$graph->title->SetMargin(5);
$graph->title->SetFont(FF_TIMES,FS_NORMAL,12);
// Създава сериите, които ще комбинираме за изчертаването
$bplot1 = new BarPlot($datay1);
$bplot2 = new BarPlot($datay2);
$bplot3 = new BarPlot($datay3);
$bplot4 = new BarPlot($datay4);
//Показва стойностите
$bplot1->value->SHow();
$bplot1->value->SetAngle(80);
$bplot1->value->SetFont(FF_ARIAL,FS_NORMAL,7);
$bplot1->value->SetFormat("%01d");
$bplot2->value->SHow();
$bplot2->value->SetAngle(80);
$bplot2->value->SetFont(FF_ARIAL,FS_NORMAL,7);
$bplot2->value->SetFormat("%01d");
$bplot3->value->SHow();
$bplot3->value->SetAngle(80);
$bplot3->value->SetFont(FF_ARIAL,FS_NORMAL,7);
$bplot3->value->SetFormat("%01d");
$bplot4->value->SHow();
$bplot4->value->SetAngle(80);
$bplot4->value->SetFont(FF_ARIAL,FS_NORMAL,7);
$bplot4->value->SetFormat("%01d");
$bplot4->value->SHow();
//Инициализира цветовете с 10% прозрачност (alpha channel)
$bplot1->SetFillColor('red@0.1');
$bplot2->SetFillColor('orange@0.1');
$bplot3->SetFillColor('yellow@0.1');
$bplot4->SetFillColor('white@0.1');
//Инициализира легендата
$bplot1->SetLegend('Брой клиенти');
$bplot2->SetLegend('Брой банкови карти');
$bplot3->SetLegend('Брой потребителски кредити');
$bplot4->SetLegend('Брой служители');
//Включва сянка за всяка колона с 40% прозрачност
$bplot1->SetShadow('black@0.4');
$bplot2->SetShadow('black@0.4');
$bplot3->SetShadow('black@0.4');
$bplot4->SetShadow('black@0.4');
$gbarplot = new GroupBarPlot(array($bplot1,$bplot2,$bplot3,$bplot4));
$gbarplot->SetWidth(0.8);
$graph->Add($gbarplot);
$graph->Stroke();
?>
Ами това е. Дано ви влезе в работа. Пакетът включва много възможности за изчертаване на различни по тип диаграми. Данните за диаграмите обикновено не помествам в масиви, а тегля от базата данни. Затова ползвам изчертаване в реално време.