Génération de statistiques en PHP
Si il y a une chose qui est sûre, c'est que PHP-GD c'est chiant: ça ne marche pas chez tous les hébergeurs , ça génère des images qui ne peuvent pas être redimensionnées et c'est plutôt chiant de bosser avec.
Il y a quelques temps de ça, aidé de MsieurHappy (qui a lui aussi travaillé sur les graphes SVG), j'avais développé pour la forge CodingTeam une classe permettant de générer des graphes en SVG. Ces graphes peuvent être admirés, par exemple, ici. J'ai remarqué que plusieurs personnes étaient intéressés par la génération de graphes SVG en PHP, alors, autant faire un petit billet explicatif de cette solution (j'avais d'ailleurs déjà abordé le sujet il y a quelques temps, mais là, c'est plus technique).
L'avantage de SVG c'est qu'on ne génère pas une image mais un fichier XML. Et on peut zoomer comme on veut sur un fichier SVG, l'exporter en png à la taille qu'on veut, tout en gardant une très bonne qualité. Et c'est un avantage indéniable parce que les statistiques, ça peut se réutiliser, s'afficher ailleurs et c'est lourd d'être limité par la taille de l'image.
La classe génère pour le moment des graphes à bâtons et à nuage de points reliés. On peut imaginer encore plein d'autres types de graphes ou encore améliorer ceux existants, bref, on peut encore faire plein de choses sur cette classe, mais déjà, elle marche pas mal.
Publiée sous une licence libre AGPLv3, vous pouvez vous aussi l'utiliser. Le téléchargement se fait ici (et la CSS qui va avec est là, pour avoir les infobulles).
Un exemple tout bête d'utilisation de cette classe :
$drawsvgchart = new DrawSVGChart();
Header('Content-Type: image/svg+xml; charset=utf-8');
$legend = array('#5276A9', 'bières');
$datas = array('blonde' => 21, 'brune' => 15, 'ambrée' => 28);
$drawsvgchart->createChart($datas, array($legend), FALSE, FALSE);
echo $drawsvgchart->getXMLOutput();Là, nous avons représenté des parts (tout à fait arbitraires) de quelques couleurs de bières, maintenant, attaquons-nous à la représentation d'une évolution.$drawsvgchart = new DrawSVGChart();
Header('Content-Type: image/svg+xml; charset=utf-8');
$legend = array('#5276A9', 'consommation de bières');
$datas = array('janvier' => 64, 'février' => 42, 'mars' => 50);
$drawsvgchart->createChart($datas, array($legend), FALSE, TRUE);
echo $drawsvgchart->getXMLOutput();Et pour terminer tout ça, voyons un peu l'état actuel du réfrigérateur.$drawsvgchart = new DrawSVGChart();
Header('Content-Type: image/svg+xml; charset=utf-8');
$legend = array(array('#5276A9', 'bières'),
array('#CD3333', 'bières à jeter'));
$datas = array(array('maison' => 64, 'travail' => 42, 'voisin' => 54),
array('maison' => 0, 'travail' => 5, 'voisin' => 10));
$drawsvgchart->createChart($datas, $legend, FALSE);
echo $drawsvgchart->getXMLOutput();Bref, c'est tout simple et c'est plutôt joli.Si vous êtes intéressés par cette manière de générer vos graphiques, n'hésitez pas à tester. Et si vous avez des idées d'améliorations ou même du code, n'hésitez pas à proposer.
Publié le samedi 13 décembre 2008, par xbright dans la catégorie : Programmation - Lien permanent
Commentaires
14 commentaires
samedi 13 décembre 2008
18:44
Chapeau bas ! Toutes mes félicitations, c'est du beau travail.
— Stemp18 commentaire(s) - Trolleur égaré
jeudi 18 décembre 2008
14:26
On veut des copies d'écran (pas possible de télécharger le code d'où je suis pour le moment).
— Mère Teresa1 commentaire(s) - Trolleur égaré
jeudi 18 décembre 2008
22:09
Indice !
Parmi les liens de ce billet se cachent :
— xbright- une page où on peut voir cette classe qui pond 3 graphismes
- un ancien billet dans lequel on voit un vieux screenshot pas à jour
366 commentaire(s) - Squatteur <3
dimanche 21 décembre 2008
01:52
Second Indice !
Parmi les commentaires de ce billet se cachent :
- de l'hypocrisie
— :D :D- du léchage de cul
- des puceaux
2 commentaire(s) - Trolleur égaré
dimanche 21 décembre 2008
01:53
quoi c'était chouettement rigolo :D
— :D :D2 commentaire(s) - Trolleur égaré
mercredi 24 décembre 2008
16:13
Une question : est ce qu'on peut combiner les deux types de graphiques (par points ET a barre) ?
— JonathanMM6 commentaire(s) - Trolleur égaré
mercredi 24 décembre 2008
16:21
Et apparament, ça prend pas 3 graphs en même temps
— JonathanMM6 commentaire(s) - Trolleur égaré
samedi 27 décembre 2008
01:18
Il fut un temps, on pouvait. Mais plus maintenant je crois. Et non, ça ne prend que deux machins max, pas trois.
Ça demande donc à être amélioré, mais c'est déjà une bonne petite base, je trouve. :)
— xbright366 commentaire(s) - Squatteur <3
samedi 27 décembre 2008
14:23
Oui, c'est sur :) En tant que tel, ça me permet de faire des graph des pages vues et des visites :)
— JonathanMM6 commentaire(s) - Trolleur égaré
lundi 12 janvier 2009
16:54
Moi j'attends toujours mon billet de déconne dans la rubrique "Pour mes fans" .
— LA MINE1 commentaire(s) - Trolleur égaré
lundi 19 janvier 2009
04:30
Bonjour à tous les lecteurs d’xbright. Je représente le collectif « xbright reviens-nous ♥ », qui s’est constitué à la suite de la disparition de notre ami. Si vous avez une information, une hypothèse, si vous avez été en contact avec lui dans les derniers quinze jours, s’il vous a fait part d’inquiétude, merci de le dire sur http://xbright-reviens-nous.last-ex... Merci.
— Merwok24 commentaire(s) - Trolleur de passage
mardi 20 janvier 2009
04:17
Tout à fait Merwok, nous avons même une nouvelle preuve de sa disparition : http://xbright-reviens-nous.last-ex...
— elghinn232 commentaire(s) - Nolife
mardi 27 janvier 2009
07:31
J'ai un gros suppositoire dans les fesses, que c'est bon !
— fabrice4 commentaire(s) - Trolleur égaré
dimanche 19 avril 2009
04:25
C'est quoi ce spam/flood ? :/
— elghinn232 commentaire(s) - Nolife