JpGraph : Générer un graphique de vos données

23 aout 2014 rdorigny 0 commentaires

Connaissez-vous JpGraph? Non? Et bien vous devriez! Voila un outil qui est relativement simple à implémenter et qui permet de générer de beaux graphiques de vos données.

Je vais vous présenter un exemple d'utilisation de cette librairie par l'intermédiaire d'un script PHP pour afficher des mesures de température et de pression.



JpGraph est un ensemble de librairies PHP orientées objet qui permettent de générer automatiquement des graphiques de toutes sortes, une page d'exemples de réalisations est disponible sous http://jpgraph.net/features/gallery.php. La qualité des graphiques est exeptionnel, d'un niveau professionnel.

Autre point fort de ces librairies, la documentation! Et cela est suffisamment rare pour être noté, JpGraph propose une documentation en ligne très pédagogique avec de nombreux exemples. Elle est disponible par : http://jpgraph.net/doc/howto.php.

J'ai réalisé dernièrement un dispositif qui réalise des mesures tous les quarts d'heure de la température et de la pression. Ce sera un parfait exemple pour utiliser JpGraph. Nous allons faire un tracé des mesures sur un graphique pour une durée d'une journée. Pour cela, il suffit d'appeler l'image dynamique par:
<img src='./graph.php5?date=".$date."' border=0 width=800 height=600>

Avec une date au format "22/08/2014".

Et le script graph.php5 :
<?php //Réaliser la connexion à la base de données au préalable require_once ('./jpgraph/src/jpgraph.php'); require_once ('./jpgraph/src/jpgraph_line.php'); //Initialisation des tableaux de mesures $tab_tp=array(); $tab_pr=array(); $tab_hum=array(); $tab_temps=array(); $i=0; $tab_mois=array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"); if ((isset($_GET["date"])&&($_GET["date"]!=""))) { $date=$_GET["date"]; if ($date!="") { $tab=explode("/",$date); if (sizeof($tab)==3) { $jour=$tab[0]; $mois=$tab[1]; $annee=$tab[2]; } } } else //la date du jour { $jour=date('d'); $mois=date('m'); $annee=date('Y'); } $str=$jour." ".$mois." ".$annee; $requete="SELECT tp,hum,pr,date from matable where date like '".$str."%' order by num;"; $res=mysql_query($requete,$Connection); while ($t=mysql_fetch_row($res)) { $tab_tp[$i]=$t[0]; $tab_hum[$i]=$t[1]; $tab_pr[$i]=$t[2]; $tab=explode(" ",$t[3]); $tmp=$tab[sizeof($tab)-1]; $tab=explode(":",$tmp); $tab_temps[$i]=$tab[0]+$tab[1]/60; //print($tab_temps[$i]."<BR>"); $i++; } //for ($i=0;$i<sizeof($tab_tp);$i++) print($tab_tp[$i]."<BR>"); //Création du graphique $graph=new Graph(800,600); $graph->img->SetMargin(40,40,20,40); //$graph->SetScale("linlin",0,0,0,24); $graph->SetScale("linlin"); $graph->SetY2Scale("lin"); $graph->img->SetAntiAliasing(false); $graph->title->Set("Saint Rémy les chevreuses - Mesures bureau"); $graph->subtitle->Set("(".$jour." ".$tab_mois[intval($mois)-1]." ".$annee.")"); $graph->SetBox(false); $graph->img->SetAntiAliasing(); $graph->yaxis->HideZeroLabel(); $graph->yaxis->HideLine(false); $graph->yaxis->HideTicks(false,false); $graph->xgrid->Show(); $graph->xgrid->SetLineStyle("solid"); //$graph->xaxis->SetTickLabels(array('A','B','C','D')); $graph->xgrid->SetColor('#E3E3E3'); //$graph->xgrid->SetWeight(1); //Création des lignes $lineplot=new LinePlot($tab_tp,$tab_temps); $lineplot2=new LinePlot($tab_pr,$tab_temps); //$lineplot3=new LinePlot($tab_hum,$tab_temps); // Add the plot to the graph $graph->Add($lineplot); $graph->AddY2($lineplot2); //$graph->AddY2($lineplot3); $graph->yaxis->SetColor("#FF1493"); $lineplot->SetColor("#FF1493"); $lineplot->SetLegend("Température en °"); $lineplot->SetWeight(2); $graph->y2axis->SetColor("#6495ED"); $lineplot2->SetColor("#6495ED"); $lineplot2->SetLegend("Pression en Pa"); $lineplot2->SetWeight(2); //$lineplot3->SetColor("#6495ED"); //$lineplot3->SetLegend("Humidité en %"); //$lineplot3->SetWeight(2); $graph->legend->SetFrameWeight(1); //Affichage du graphique $graph->Stroke(); ?>

Ce qui affichera:
Le script récupère tout d'abord la date, qui à défaut est celle du jour. Ensuite, on requête la base de données pour initialiser les tableaux dédiés aux données. Il est nécessaire de créer une instance de l'objet Graph et on lui associe les lineplot de nos tableaux de données.

JpGraph est très simple à utiliser, suivez les exemples de la documentation en ligne, tout y est!







Pseudonyme (obligatoire) :
Adresse mail (obligatoire) :
Site web :




© 2017 www.doritique.fr par Robert DORIGNY