Articles

Solutions graphiques pour PHP

  • Ecrit par Christophe Villeneuve
  • mercredi 11 juillet 2007
Image pour le titre du contenu

Depuis de nombreuses années, les bibliothèques pour créer des graphiques en PHP sont de plus en plus nombreuses. Dans cet article, nous allons effectuer un tour d'horizon de ce qu'il existe actuellement. Nous verrons comment ces différentes bibliothèques se comportent et se comparent, à l'aide d'un essai complet de code. Nous avons retenu sept bibliothèques :

  • Artichow
  • Chart Director
  • GDGraph
  • Graphp-ic
  • Jpgraph
  • Phplot
  • Zackbloom

Depuis de nombreuses années, les bibliothèques pour créer des graphiques en PHP sont de plus en plus nombreuses. Dans cet article, nous allons effectuer un tour d'horizon de ce qu'il existe actuellement. Nous verrons comment ces différentes bibliothèques se comportent et se comparent, à l'aide d'un essai complet de code. Nous avons retenu sept bibliothèques :

  • Artichow
  • Chart Director
  • GDGraph
  • Graphp-ic
  • Jpgraph
  • Phplot
  • Zackbloom

Configurations

Pour utiliser les bibliothèques graphiques, il faut obligatoirement :
•    Activer la librairie graphique GD de php.ini
•    Hébergement avec le support de PHP

Méthode de test

Pour notre comparaison graphique, nous allons créer un graphique de couleur verte, avec une légende, un titre, et 4 valeurs (1,-2.5,7,3) associées à des trimestres dans une image de dimensions 500x300 pixels. À partir de ces hypothèses, nous allons pouvoir comparer les prérequis, les styles de programmation et les résultats avec chaque librairie.

Installation Générale

Après avoir télécharger toutes les bibliothèques sur les sites de tous les auteurs, il faut effectuer l'installation de chacune d'elles pour réaliser nos graphes. La majorité des bibliothèques graphiques possèdent 1 ou plusieurs fichiers à mettre dans votre site et d'effectuer la connexion ente votre site et la bibliothèque.

Description des bibliothèques testées


ARTICHOW

Version actuelle :  1.10 et 2.0a
URL : http://www.artichow.org
Version : PHP 4.xx ou PHP 5.xx ou plus
GD : 2 ou plus
Programme en francais
Documentation en ligne

Descriptif : Il existe plusieurs jeux de bibliothèques : l'un pour PHP 4 et l'autre pour PHP 5. Vous n’avez rien à configurer : c’est l’application qui se charge de choisir la bonne version de PHP du serveur.
Il existe un fichier configuration qui vous permet de modifier certains paramètres de la librairie si vous le désirez

Installation : aucun processus d'installation en dehors du téléchargement. Mettez simplement le fichier config et les dossiers PHP 4 et 5 dans le site

Licence : Domaine public

Réalisations possibles :
  • Traitement de l’image
  • Histogramme
  • Ligne
  • Courbes de math
  • Pattern
  • Camembert
  • Camembert éclaté
  • Texte
  • Scatter : avec des valeurs, en cercle, en impulses
  • Captcha Antispam

Particularités : à partir de la version 2, il sera possible de générer des graphes en Flash avec l'extension Ming.

Chaque graphique est pris en charge par une classe différente, et donc un fichier différent. L’avantage de cette approche est de charger en mémoire juste la partie de la bibliothèque dont on a besoin pour créer le graphique.

Exemple :

<?php
require_once "LinePlot.class.php";
 
 
$graph = new Graph(500, 300);
 
 
$graph->setAntiAliasing(FALSE);
$graph->title->set("Exemple Direction PHP");
 
 
$values = array(1,-2.5,7,3);
$y = array('Trimestre 1','Trimestre 2','Trimestre 3','Trimestre 4');
$plot = new LinePlot($values);
$plot->legend->add($plot, 'Trimestre', LEGEND_MARK);
$plot->setColor(new Color(0, 255, 0    , 20));
 
 
$plot->xAxis->setLabelText($y);
$plot->yAxis->setLabelPrecision(1);
$plot->setSpace(10, 10, NULL, NULL);
 
 
$graph->add($plot);
$graph->draw();
?>

Résultat :







CHART DIRECTOR

Version actuelle : 4.1
URL : http://www.advsofteng.com/
Version : PHP 4.3.x ou plus
GD 2 ou plus
Programme en Anglais
Documentation : HTML
Descriptif : toutes les classes sont dans le même fichier.
Installation pour Windows
Il faut ajouter une extension à PHP 5.2.x.
1.    Ajoutez la ligne extension=phpchartdir520.dll au fichier de configuration php.ini
2.    Copier les bibliothèques systèmes (fichiers lib/*.dll) dans le répertoire extensions/ de PHP
3.    copier le script lib/phpchartdir.php dans un répertoire de votre site
Un assistant d'installation est fourni pour chaque système d'exploitation sur le site de la bibliothèque.

Licence : commerciale, 99 dollars

Réalisations possibles :
  • Anti-aliasing
  • Fond d'écran
  • Graphiques 2D et 3D
  • Nuages de points
  • Radars
  • Camemberts 3D
  • Histogrammes 3D
  • Lignes en 2D et 3D
  • Courbes  en 2D et 3D
  • Aires
  • Incertitudes
  • Zones semi-transparence
  • Texte
  • Système de couches
  • Dégradés
  • Motifs de remplissage
  • Diagramme de Gantt
  • Graphiques interactifs (image map)...

Particularités :
  • Une aide à l'installation est proposée, en fonction de votre système d'exploitation.
  • Tous les modèles graphiques sont proposés en 3D
  • Il est impossible de créer sa propre classe

Exemple :
<?php
require_once("../lib/phpchartdir.php"); 
 
 
$data = array(1,-2.5,7,3);
$labels = array("Trimestre 1", "Trimestre 2", "Trimestre 3", "Trimestre 4"); 
 
 
$c = new XYChart(500, 300);
 
 
$c->addTitle2(Top, "Exemple Direction PHP", "arial.ttf", 12, 0x000000);
$c->setPlotArea(30, 30, 360, 230);
$c->addLineLayer($data,0x00FF00); 
 
 
$c->xAxis->setLabels($labels);
$c->xAxis->setLabelStep(1); 
 
 
$c->addLegend(405, 100);
$layer = $c->addLineLayer();
$layer->addDataSet($data, 0x00FF00, "Trimestre");
 
 
header("Content-type: image/png");
print($c->makeChart2(PNG));
?>

Résultat




GDGRAPH

Version actuelle : 2.1
URL : http://www.makkosolutions.com.mx/product/gdgraph/
Version : PHP 4.3.x ou plus
GD 2 ou plus

Programme anglais
Documentation  : format HTML sur internet
Descriptif  : toutes les classes sont dans le même fichier
Installation : aucune installation

Licence : licence GPL

Realisation possible
  • Histogramme 3D
  • Ligne 3D
  • Camembert 3D

Particularités :
Actuellement peu de variété dans les graphiques possibles. La bibliothèque est est très facile à utiliser, et permet même des affichages 3D.

Exemple
<?php
require_once("gdgraph.php");
 
 
$gdg = new GDGraph(500,300,"Exemple Direction PHP");
 
 
$arr = Array( 'Trimestre' => Array(1,-2.5,7,3));
$colors = Array('Trimestre' => Array(50,210,50) );
$x_labels = Array('Trimestre 1','Trimestre 2','Trimestre 3','Trimestre 4');
 
 
$thicknesses = Array('Trimestre ' => 1);
 
 
$gdg->line_graph($arr, $colors, $x_labels);
 
 
?>
Résultat :




GRAPHP-IC

Version actuelle : 1.0
URL : Aucun
PHP : 3.x ou 4.x
GD : 1.8x ou 2
Programme Français
Documentation : fournie avec le code source
Descriptif : 1 fichier par type de graphique
Installation : Aucune installation
Licence : licence GPL

Réalisations possibles :
  • Camembert
  • Histogramme
  • Courbe

Particularités :
Il est important de connaître les noms des fonctions en PHP.

JPGRAPH

Version actuelle : 2.2
URL : http://www.aditus.nu/jpgraph/
Version : PHP 5.1x ou plus
GD : 1.8.x ou 2.15 ou plus
Programme : anglais
Documentation : aide en ligne pour les fonctions
Descriptif :  une version 1.21b existe pour PHP 4 et PHP 5.0
Il existe un fichier comprenant l'ensemble des librairies
Installation : aucune installation
Licence : libre pour une licence non-commerciale.
Pour une utilisation commerciale, licence payante.

Réalisations possibles :

  • Ligne
  • Histogramme
  • Camembert
  • Nuages de points
  • Anti-aliasing
  • Fond d'écran
  • Graphiques 2D et 3D
  • Radars
  • Courbes
  • Aires
  • Incertitudes
  • Zones
  • Semi-transparence
  • Texte
  • Dégradés
  • Motifs de remplissage
  • Diagramme de Gantt
  • Graphiques interactifs (image map)

Particularités :
Il existe une version pour PHP 4

Exemple
<?php
include ("../jpgraph.php");
include ("../jpgraph_line.php");
 
 
$ydata = array(1,-2.5,7,3);
$xdata = array('Trimestre 1','Trimestre 2','Trimestre 3','Trimestre 4');
 
 
$graph = new Graph(500,300,"auto");
$graph->SetScale("textlin");
$graph->img->SetMargin(40,40,40,50);
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($xdata);
$graph->title->Set("Exemple Direction PHP");
 
 
$lineplot=new LinePlot($ydata);
$lineplot->SetColor("green");
 
 
$lineplot->SetLegend("Trimestre");
$graph->Add($lineplot);
 
 
$graph->Stroke();
?>
Résultat  :




PHPLOT

Version actuelle 5.0rc3
URL : http://www.phplot.com
Version : PHP 4.2.0 ou plus récent
GD : 2 ou plus
Programme en Anglais
Documentation : format HTML
Descriptif :
Il existe plusieurs jeux de bibliothèques : toutes les classes sont dans le même fichier.
Installation : aucune installation

Réalisations possibles :
  • Lignes
  • Barres analogiques
  • Barres empilées
  • Points
  • Camembert
  • Histogramme en 2D ou 3D
  • Grilles verticales et horizontales
  • Texte
  • Image
Particularités :
  • Graphiques en 2D
 
Exemple :
<?php
require_once 'phplot.php';
 
 
$plot =&amp; new PHPlot(500,300);
 
 
$example_data = array(
     array('Trimestre 1',1),
     array('Trimestre 2',-2.5),
     array('Trimestre 3',7),
     array('Trimestre 4',3)
);
 
 
$plot->SetDataValues($example_data);
 
 
$plot->SetXTickLabelPos('none');
$plot->SetXTickPos('none');
$plot->SetDataColors('green');
$plot->SetTitle('Exemple Direction PHP');
 
 
$plot->SetLegend('Trimestre');
 
 
$plot->DrawGraph();
?>

Résultat : 



ZACKBLOOM

Version actuelle : 1.0
URL : http://www.zackbloom.org/
PHP 4.xx et plus
GD : 2 ou plus
Application en anglais
Documentation format HTML
descriptif :
Un seul fichier contenant toutes les classes
Installation : aucune installation
Licence  : Licence GPL

Réalisations possibles :
  • Courbes
  • Camembert en 3D
  • Histogramme
  • Courbes maths
  • Ligne et point
  • Spiral
  • Courbes graphiques

Particularités :
  • Connaître le temps d'exécution pour afficher l'image

Exemple  :
<?php
include "graph.oo.php";
$graph = new graph(500,300);
 
 
$graph->setColor('color',0,'green');
$graph->setProp('title','Exemple Direction PHP');
$graph->addPoint(1);
$graph->addPoint(-2.5);
$graph->addPoint(7);
$graph->addPoint(3);
$graph->setProp('scale',array('Trimestre 1','Trimestre 2','Trimestre 3','Trimestre 4'));
$graph->graph();
$graph->showGraph();
?>

Résultat : 




Résumé :


Artichow

Chart Director

GDGraph

Graphp-ic

Jpgraph

Phplot

Zackbloom

Version

2.0a

4.1

2.1

1.0

2.2

5.0rc3

1.0

PHP

4.xx,5.xx

4.xx,5.xx

4.3.x,5.xx

3.x,4.x

4.xx,5.xx

4.2.x,5.xx

4.xx,5.xx

GD

2

2

2

1.8,2

1.8,2

2

2

Licence

GPL

Payant

GPL

GPL

GPL,

Payant

GPL

GPL

Langue

FR

EN

EN

FR

EN

EN

EN

Install

Aucune

Differents suivant les OS

Aucune

Aucune

Aucune

Aucune

Aucune

Doc.

***

***

***

*

***

***

***

Prise en main

***

**

***

*

***

**

**

Resultat Graph

***

**

**

*

***

***

**

Avis General

***

**

**

*

***

***

**





Conclusion

Toutes les solutions qui vous sont présentés, évoluent régulièrement. Il est préférable d'aller régulièrement sur leur site de référence pour s'assurer de leurs évolutions futures.

Concernant l'ensemble de toutes ces librairies graphiques, voici nos propres palmes :
  • Le plus prometteur : Artichow
  • Le plus établi : JP Graph
  • Le plus populaire : JP Graph
< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter