PRATIQUE PHP 
Fonctionnement de JPGraph pour PHP5
 
Cette bibliothèque graphique très complète évolue constamment. Exemple et code source de deux nouveautés : les lignes de guidage et les axes Y multiples. (28/04/2006)
Notre approche précédente de JpGraph (lire notre article du 21/11/01) prenait en compte la version 1.4 de la célèbre bibliothèque graphique. Les versions 1.x de JpGraph sont réservées à PHP 4.x (la dernière version à l'heure d'écriture est la 1.20.3 du 18 février 2006), tandis qu'une nouvelle famille, 2.x, est conçue pour fonctionner avec PHP5 : la version que nous utilisons ici est la 2.1.1.

Les deux versions de JpGraph disponibles sont compatibles entre elles (elles partagent d'ailleurs le même manuel), mais les évolutions depuis la version 1.4 ont été nombreuses et notables. Nous allons nous pencher sur deux d'entre elles pour cette nouvelle approche de cette bibliothèque.

Lignes de guidage
Les diagrammes en "camembert" peuvent rapidement devenir illisibles, pour peu que le nombre de parts empêche la bonne lecture des chiffres qui leur correspondent.

La version 1.18 de JpGraph a donc ajouté les lignes de guidage, qui relient la part d'un tel diagramme à sa valeur numérique, affichée à l'extérieur du diagramme. Ce dernier peut donc contenir beaucoup de données, tout en restant lisible.
  1. <?php
  2. include ('jpgraph/jpgraph.php');
  3. include ('jpgraph/jpgraph_pie.php');
  4.  
  5. $data = array(4, 8, 15, 16, 23, 42);
  6.  
  7. $p = new PiePlot($data);
  8. $p->SetLabelType(PIE_VALUE_ABS);
  9. $p->value->SetFormat('%d');
  10. $p->SetGuideLines();
  11. $p->ExplodeSlice(1); // fait resortir la 2e part
  12.  
  13. $g = new PieGraph(220, 200);
  14. $g->title->Set("Les nombres de \"Lost\"");
  15. $g->Add($p);
  16. $g->Stroke();
  17. ?>
Plusieurs axes des Y
Les versions initiales de JpGraph ne pouvaient prendre en compte que deux axes des Y, limitant de fait les comparaisons possibles entre les ensembles de données. La version 1.20 a donc introduit les axes Y multiples - et illimités.

Grâce à la nouvelle fonction AddY(), qui supplante AddY2(), on peut définir un nouvel axe en lui assignant un chiffre, à partir de 0. L'axe 0 est le plus à gauche de ces axes supplémentaires. On peut ensuite cibler ces axes en utilisant le tableau ynaxis[] du graphique.

Notez qu'il est nécessaire de redéfinir la marge du graphique pour voir apparaître le second axe.
  1. <?php
  2. include ('jpgraph/jpgraph.php');
  3. include ('jpgraph/jpgraph_line.php');
  4.  
  5. $y1 = array(4, 8, 15, 16, 23, 42);
  6. $y2 = array(50, 48, 46, 44, 42, 40);
  7. $y3 = array(5, 5, 5, 7, 5, 5);
  8.  
  9. $lp1 = new LinePlot($y1);
  10. $lp2 = new LinePlot($y2);
  11. $lp3 = new LinePlot($y3);
  12. $lp1->SetColor("blue");
  13. $lp2->SetColor("green");
  14. $lp3->SetColor("orange");
  15.  
  16. $g = new Graph(300, 200);
  17.  
  18. $g->SetMargin(40, 100, 40, 30);
  19. $g->SetMarginColor('white');
  20.  
  21. $g->title->Set("Toujours eux, et d'autres...");
  22. $g->SetScale("intlin");
  23. $g->SetYScale(0,"lin",0,50);
  24. $g->SetYScale(1,"lin",0,50);
  25. $g->Add($lp1);
  26. $g->AddY(0,$lp2);
  27. $g->AddY(1,$lp3);
  28.  
  29. $g->yaxis->SetColor("blue");
  30. $g->ynaxis[0]->SetColor('green');
  31. $g->ynaxis[1]->SetColor('orange');
  32.  
  33. $g->Stroke();
  34. ?>
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page