Introduction
La principale librairie concernant la création de graphiques est la librairie JpGraph. C’est une librairie objet permettant de créer des graphiques avec un minimum de code. La librairie JpGraph assigne des valeurs par défaut logiques ce qui permet de créer des graphiques très complexes avec très peu de code.
Parmi les principales caractéristiques :
- support des formats JPEG, PNG, GIF.
- différents types de graphiques : line-plots, filled line-plots, accumulated line-plots, bar plots, accumulated bar plots, grouped bar plots, scatter plots, impuls plots, spider (a.k.a. Web) plots and pie charts.
- gestion d’un module de cache permettant de minimiser l’utilisation du temps processeur.
- gestion de l’antialiasing des lignes.
Configuration
JPGraph
Au 11.04.2003, la version 1.12 est la version officielle de JPGraph (http://www.aditus.nu/jpgraph/jpdownload.php)
Prérequis PHP
La version 4.1 de PHP au minimum permet de mettre en œuvre JPGraph. JPGraph 1.X n’est pas certifiée pour la version 5 de PHP. JPGraph 2.0 supportera PHP version 5.
Prérequis GD
La librairie GD (librairie dédiée à la manipulation d’images) doit être installée. Les versions supportées de GD par JPGraph sont :
- GD Library 1.8.x au minimum
- GD 2.x dans un contexte d’utilisation des nouveautés de la version 2.
Pour télécharger GD Library (http://www.boutell.com/gd/)
Configuration de PHP avec GD
Windows
La version 4.x de PHP pour Windows offre directement les extensions nécessaires de la librairie GD. Le fichier php.ini permet d’implémenter l’extension GD :
php.ini
...
;extension=php_gd.dll => librairie GD 1.x (version à vérifier avec PHPInfo)
extension=php_gd2.dll => librairie GD 2
...
Linux - Unix Like
Installation de GD
La librairie GD nécessite une installation spéciale.
gd
est installé dans le répertoire /usr/local
avec une commande make
.
Après récupération du fichier tar.gz de la librairie GD, extraire les fichiers de l’archive dans un répertoire quelconque après décompression:
cd ${download}
gunzip | uncompress tar xzf gd(1.x)(2.x).tar.gz
tar xzf gd(1.x)(2.x).tar
Lancer ensuite la compilation et l’installation de gd
:
make
gd
nécessite l’installation complémentaire des librairies suivantes :
- libpng (http://www.libpng.org/pub/png/, pour l’installation de "Portable Network Graphic")
- zlib (http://www.info-zip.org/pub/infozip/zlib/)
- jpeg-6b (optionnel, pour le support jpeg, http://www.ijg.org/)
- FreeType 2.x (optionnel, pour le support des polices TrueType, http://www.freetype.org/)
Pour vérifier la bonne installation de GD, lancer le programme gddemo
qui
génère le fichier gif demoout.gif :
./gddemo
Ajout de GD à la configuration de PHP
Si la librairie GD est installée dans le répertoire $INSTALL_GD
, PHP doit
être compilée comme ci-dessous (pour la compilation de PHP, se reporter à la
documentation correspondante) :
./configure ... ... ... --with-gd=$INSTALL_GD
make
make install
Vérification de l’implémentation de la librairie gd/
La fonction phpinfo()
permet de vérifier l’implémentation effective de la
librairie gd avec PHP :
gd | |
---|---|
GD Support | enabled |
GD Version | bundled (2.0 compatible) |
FreeType Support | enabled |
FreeType Linkage | with freetype |
JPG Support | enabled |
PNG Support | enabled |
WBMP Support | enabled |
Utilisation
La librairie génère automatiquement les headers à envoyer au navigateur.
Pour utiliser la librairie deux fichiers doivent être au moins inclus, la librairie de base et une ou plusieurs extensions. Exemple :
<?php
include ("jpgraph.php");
include ("jpgraph_line.php");
...
// Code utilisant la lib JPGraph
?>
La règle d’utilisation est simple:
- création du type de graphique souhaité
- définition des options et paramètres souhaités
- appelle de la fonction
stroke
pour générer le fichier proprement dit
Parmi les types connus: spider-plots, pie-charts, scatter-plots, line-plots, filled line-plots, accumulated line- plots, bar plots, accumulated bar plots, grouped bar plots, error plots, line error plots et graphiques de Gantt.
Deux caractéristiques méritent une attention spéciale:
- La génération automatique de limites d’échelle selon des critères esthétiques.
- La gestion automatique d’un système de cache. En effet, lorsqu’on demande une figure, si rien n’a changé elle n’est pas régénérée mais sortie du cache. Pour le cas où un même script crée des images différentes à la volée, ce mécanisme peut être nuisible et doit être desactivé (quatrième argument de Graph avec une valeur de -1).
Exemples concrets
Lineplots
<?php
include ("jpgraph.php");
include ("jpgraph_line.php");
// Application des valeurs dans un tableau
$ydata = array(6,5,25,12,5,10,32,13,5,21);
// Création de l’objet Graph.
$graph = new Graph(300,200);
$graph->SetScale("textlin");
// Création du tracé
$lineplot=new LinePlot($ydata);
// Ajout du tracé au graph
$graph->Add($lineplot);
// Affichage du graphique
$graph->Stroke();
?>
Camemberts
<?php
include ("jpgraph.php");
include ("jpgraph_pie.php");
// Données
$data = array(40,21,17,14,23);
// Création du graph Pie. Ce dernier peut être mise en cache avec PieGraph(300,300,"SomCacheFileName")
$graph = new PieGraph(300,200);
$graph->SetShadow();
// Application d’un titre au camembert
$graph->title->Set("Example 1 Pie plot");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// Création du graphe
$p1 = new PiePlot($data);
$graph->Add($p1);
// .. Création effective du fichier
$graph->Stroke();
?>
Version 3D
<?php
include ("../jpgraph.php");
include ("../jpgraph_pie.php");
include ("../jpgraph_pie3d.php");
// Some data
$data = array(20,17,15,20,15,25,25,10);
// Create the Pie Graph.
$graph = new PieGraph(350,200,"pieex1");
$graph->SetShadow();
// Set A title for the plot
$graph->title->Set("Example 1 3D Pie plot");
$graph->title->SetFont(FF_VERDANA,FS_BOLD,18);
$graph->title->SetColor("darkblue");
$graph->legend->Pos(0.1,0.2);
// Create 3D pie plot
$p1 = new PiePlot3d($data);
$p1->SetTheme("sand");
$p1->SetCenter(0.4);
$p1->SetAngle(50);
$p1->SetFont(FF_TIMES,FS_NORMAL,14);
$p1->SetLegends(array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"));
$graph->Add($p1);
$graph->Stroke();
?>
Diagramme de Gantt
Pour la mise en œuvre d’un diagramme de Gantt, la version 1.5 de JPGraph au minimum doit être mise en place.
<?php
include ("../jpgraph.php");
include ("../jpgraph_gantt.php");
// A new graph with automatic size
$graph = new GanttGraph(-1,-1,"auto");
// A new activity on row '0'
$activity = new GanttBar(0,"Project","2001-12-21","2002-02-20");
$graph->Add($activity);
// Display the Gantt chart
$graph->Stroke();
?>