Bibliothèque JPGraph pour faire de beaux graphiques de données

jpgraph_logo.png Un beau dessin vaut mieux qu'un long discours. Je me suis mis à la recherche d'une bibliothèque graphique en PHP, efficace et gratuite. Mon dévolu s'est porté sur JPGraph.

Attention, la bibliothèque JPGraph est gratuite pour un usage non commerciale du produit en version limitée.
Lien officiel(en)
Doc officielle(en)
Un tuto en français est proposé sur Developpez.com

Installation

root@pi:/root$ wget http://jpgraph.net/download/download.php?p=5 # vérifiez sur le site Officiel le chemin de téléchargement
root@pi:/root$ mv download.php?p=5 JPGraph.tar.gz
Il suffit de décompresser l'archive téléchargée dans un dossier de votre site Internet.
root@pi:/root$ tar xf JPGraph.tar.gz
root@pi:/root$ mv jpgraph-xx.yy jpgraph
Vous avez la bibliothèque installée ! Very Simple !
Attention, il y a une distrib différente pour chaque version 4 et 5 de PHP.
Il faut activer l'extension GD2 dans votre PHP, si besoin dé-commentez la bonne section dans le fichier 'php.ini' et de redémarrer le serveur Apache.

Utilisation

Exemple de représentation de la hauteur de pluie. Les données sont dans un fichier dont les valeurs sont séparées par des ","

<?php
// Appel des bliothèques
include ("jpgsrc/jpgraph.php");
include ("jpgsrc/jpgraph_bar.php");
include ("jpgsrc/jpgraph_line.php");

// Creation du cadre du graphique
$graph = new Graph(740,400,"auto");	    // dimension
$graph->SetScale("linlin",0,"auto",0,480); // échelle
$graph->img->SetMargin(0,0,0,0);
$graph->SetShadow();
$graph->SetFrame(false);
$graph->yaxis->SetLabelSide(LEFT);          // position du label
$graph->xaxis->SetLabelSide(TOP); 
$graph->legend->Pos( 0.7,0,"right" ,"top"); 
$graph->xgrid->Show();

// lecture des données
$f_data=fopen('temp/meteo_pluie_j.log','r') ;
$pluie=fgetcsv($f_data,",") ;
fclose($f_data) ;

// Creation de la courbe de données
$linepluie=new LinePlot($pluie);
$linepluie->SetColor("peru");
$linepluie->SetLegend('hauteur de pluie');

// Add the plot to the graph
$graph->Add($linepluie);

// Display the graph
$graph->Stroke();

?>

Vous remarquerez la facilité de lecture des données. En fait on créé un "array", un tableau si vous préférez , directement en lisant le fichier et en indiquant que le séparateur est, dans mon cas, une ",".
C'est cet "array" qui est envoyé dans JPGraph : $linepluie=new LinePlot($pluie);
Dans la page de mon site, je fais appel à un <iframe src="courbes_meteo.php" style="width:600px; height:400px; margin=0px; " ></iframe>. Par exemple.
Ceci me permet de séparer mes pages de codes dans 2 fichiers séparés... C'est plus clair !

Vous voulez voir le résultat : mon site météo

pour aller plus loin

De nombreux exemples sont donnés dans le dossier "jpgraph". C'est à partir de ceux-ci que j'ai réussi à faire les graphes que j'attendais.
Les possibilités sont très grandes, même pour une version gratuite du produit.