Bibliothèque graphique : JpGraph  

Il existe plusieurs classes objets qui implémentent une interface simple pour fabriquer des graphiques. Il n’est donc pas nécessaire de faire appel aux fonctions bas niveau de la bibliothèque GD.

Une de ces bibliothèques est la JpGraph, choisie ici parce que ses performances sont remarquables et parce que son développeur promet encore de nombreuses améliorations (Joan Persson est l'auteur de cette bibliothèque, sous licence QTL, libre d'utilisation pour des applications non commerciales).

Image

Note : Si vous souhaitez utiliser cette bibliothèque pour des applications commerciales, rendez-vous sur le site pour plus d’informations (http://www.aditus.nu/jpgraph/).

Introduction

Parmi les principales caractéristiques :

  • Supporte les formats JPEG, PNG, GIF.
  • Propose énorméments de types différents de graphiques : line-plots, filled line-plots, accumulated line-plots, bar plots, accumulated bar plots, grouped bar plots, scatter plots, impuls plots, spider plots and pie charts.
  • Gère un module de cache permettant de minimiser l'utilisation du temps processeur.
  • Gère l'antialiasing des lignes

L'auteur de cette librarie est Johan Persson ( \n johanp@aditus.nu Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir )

La première release publique date de fevrier 2001.

Cette librairie est sous licence QPL c'est à dire gratuite pour des projets non commerciaux.

Installer la JpGraph

La première étape consiste à downloder les fichiers de la librairie sur le site de l'auteur : http://www.aditus.nu/jpgraph/jpdownload.php

Si vous souhaitez cette puissante bibliothèque, quelques pré-requis sont néanmoins nécessaires :

  • Php 4 au moins doit être installé.
  • La librairie GD doit être supportée.

Vous devrez alors mettre les fichiers de la JPGraph dans votre arborescence Web. C'est fait ! vous pouvez deja utiliser la JpGraph en utilisant des include.
Cependant il peut être interessant de définir le chemin d'acces à la JpGraph dans la variable include_path.

Générer des images avec PHP

Une règle de programmation veut qu'en PHP un fichier générant une image doit se trouver dans un fichier séparé qui sera appelé par un tag <img> . L'exemple suivant nous montre comment inclure une image générée par le fichier fig1.php.

Le code du fichier index.html
  1. <head></head>
  2.     <img src="fig1.php" border=0 align=center width=300 height=200>
  3. </body>
  4. </html>

La bibliothèque va automatiquement générer les headers à envoyer au navigateur.
Pour utiliser la bibliothèque vous allez devoir inclure au moins deux fichiers, la bibliothèque de base et une ou plusieurs extensions.
Prenons l'exemple ou nous voudrions utiliser les lignes, vous devez inclure en haut de votre fichier PHP les lignes suivantes :

Le code du fichier fig1.php
  1. <?php
  2. include_once ('jpgraph.php');
  3. include_once ('jpgraph_line.php');
  4. . . .
  5. // Code utilisant la lib JPGraph
  6. . . .
  7. ?>

Exemple de base

L'exemple suivant va nous indiquer comment créer un graphe de 10 valeurs en abscisses Y

Le code du fichier fig1.php
  1. <?php
  2. include_once ('jpgraph.php');
  3. include_once ('jpgraph_line.php');
  4. // Il faut mettre des valeurs dans un tableau.
  5. // Vous pouvez les recuperer d'une base de données ou autres...
  6. $ydata = array(6,5,25,12,5,10,32,13,5,21);
  7.  
  8. // On créé l'objet Graph. Ces deux appels sont toujours necessaires.
  9. $graph = new Graph(300,200);   
  10. $graph->SetScale("textlin");
  11.  
  12. // On créé un tracé
  13. $lineplot=new LinePlot($ydata);
  14.  
  15. // On ajoutte ce tracé au graph
  16. $graph->Add($lineplot);
  17.  
  18. // On affiche le graphique
  19. $graph->Stroke();
  20. ?>

 

Image

 

Exemples poussés

Générer des diagrames de GANT

Il est necessaire de disposer d'une version de la JPGraph >= 1.5 pour cet exemple.

Figure 2. script PHP pour un graphique GANT (exemple2.php

Figure 2. Script PHP pour un graphique GANT (exemple2.php)
  1. <?php
  2. include_once ('./jpgraph.php');
  3. include_once ('./jpgraph_gantt.php');
  4.  
  5. // A new graph with automatic size
  6. $graph = new GanttGraph(-1,-1,'auto');
  7.  
  8. //  A new activity on row '0'
  9. $activity = new GanttBar(0,'Project','2001-12-21','2002-02-20');
  10. $graph->Add($activity);
  11.  
  12. // Display the Gantt chart
  13. $graph->Stroke();
  14. ?>

 

Image

 

Conclusion

En conclusion il apparait que la JPGraph est un outil tres puissant et tres orienté pour le monde professionel ou les graphiques sont tres importants. Particulièrement pour la création de "sugar eye".

Il pourra également ravir les webmasters desireux de générer des graphiques facilement.
Le système de cache permet de soutenir des charges importantes.

Liens

Le site officiel de la JpGraph
Présentation par le JDNet

Témoignages

Cyril PIERRE de GEYER (formateur PHP) : Nous incluons dans nos formations Expert au PHP une session sur la JpGraph qui ravit nos clients.
Un de nos client (Stepan Europe) l'a notament utilisé pour afficher les résultats (températures, pression,..) de leurs cuves de préparation d'ingrédients chimiques.

L'équipe technique d'axsmarine

Pour réponde à nos besoins en terme de graphes dynamiques nous avons testé YKCEE et la JpGraph. Nos besoins étaient des graphes dynamiques de deux types :

  • données stockées dans une BD MySQL.
  • données issues d'un calcul : calculateurs financiers avec résultats sous forme de graphes.

Nos tests de montée en charge sur l 'ensemble du site n'ont pas montrés de faiblesses sur les pages contenant les graphes dynamiques.

Les atouts :

  • l'approche orientée objet permet une prise en main et un paramétrage rapide et efficace.
  • la richesse des types de graphes que l'on peut générer : barres, secteur, courbes ...etc.
  • le nombre important d'exemples à disposition.
  • l'évolution permanente et rationnelle. l'auteur prend en compte les remarques des utilisateurs et les nouvelles versions apportent de réelles avancées.
  • la documentation de qualité et le code commenté.

Les faiblesses :

  • la gestion automatique de l'échelle peut parfois poser quelques petits soucis sans gravité toutefois.

 


Retour à l'accueil des articles