Accueil > > > STATISTIQUE GRAPHIQUE (COMPOSANT ARTICHOW)
STATISTIQUE GRAPHIQUE (COMPOSANT ARTICHOW)
Information sur la source
Description
Une librairie très intéressante pour les statistiques: http://www.artichow.org Mais je n'ai rien trouvé de "prêt à l'emploi" pour cette librairie, donc je m'y suis mis, pour l'instant je ne gère que les camemberts et les courbes mais il est très simple d'étendre le système aux autres types de graphique (dès que je le fais je mettrais à jour la source). Normalement il vous suffit de mettre l'include et vous pouvez créer un graphique avec preload en quelques lignes de code !!! Dans les exemples les tableaux de données sont en dur mais ils peuvent très bien provenir d'une base de données !! Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés) Certains vont dire que ma source est pas propre, que j'aurais du faire de l'objet, du PHP5 etc...etc... en fait j'ai fais ce que j'ai pu avec ce que j'avais (limité à PHP 4.3) par contre je prends toutes les critiques constructives et les propositions d'amélioration !
Source
- <?php
- session_start();
- ?>
- <html>
- <head>
- <title>Exemple MyArtiChow</title>
- </head>
- <body>
- <a href="index2.php">Version sans anti-alias</a>
- <?php
- // Permet de lancer un traitement lorsque toutes les images sont chargées...
- $checkStatImagesOnAllComplete = 'alert("Toutes les images sont chargées !");';
-
- // Include avec toutes mes fonctions qui vont bien...
- include('artichow-1.1.0/statistiques_include.php');
-
-
- /****************************************************** LES CAMEMBERTS *****************************************************/
-
- /********* EXEMPLE 1 (simple) **********/
-
- // Titre du camembert
- $title = "EXEMPLE 1 (simple) :";
-
- // Largeur du camembert
- $width = 750;
-
- // Hauteur du camembert
- $height = 400;
-
- // Tableau des légendes
- $legend = array('Titi','Toto','Tata','Les autres');
-
- // Tabeau des valeurs
- $data = array(38,28,7,37);
-
- // On crée l'image
- insertStatImage(1,$width,$height,$title,$legend,$data,'');
-
- echo'</br></br>';
-
-
-
-
- /********* EXEMPLE 2 (mise en forme des légendes) **********/
-
- // Titre du camembert
- $title = "EXEMPLE 2 (mise en forme des légendes) :";
-
- // Largeur du camembert
- $width = 750;
-
- // Hauteur du camembert
- $height = 400;
-
- // Tableau des légendes
- $legend = array('ABCDEF','GHIJKL','MNOPQRS','TUVWXYZ');
-
- // Tabeau des valeurs
- $data = array(110,25,86,42);
-
- // On met en forme les légendes
- foreach($legend as $key => $value){
- if(strlen($value)>30){
- $lbl = substr($value,0,27).'...';
- }
- else{
- $lbl = str_pad($value,30,'.');
- }
- $legends[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
- $datas[] = $data[$key];
- }
-
- // On crée l'image
- insertStatImage(1,$width,$height,$title,$legends,$datas,'');
-
- echo'</br></br>';
-
-
-
-
- /********* EXEMPLE 3 (tri par ordre décroissant) **********/
-
- // Titre du camembert
- $title = "EXEMPLE 3 (tri par ordre décroissant) :";
-
- // Largeur du camembert
- $width = 750;
-
- // Hauteur du camembert
- $height = 400;
-
- // Tableau des légendes
- $legend = array('Titi','Toto','Tata','Les autres');
-
- // Tabeau des valeurs
- $data = array(16,25,2,34);
-
- // Tri par ordre décroissant
- array_multisort($data, SORT_DESC, $legend, SORT_ASC);
-
- // On crée l'image
- insertStatImage(1,$width,$height,$title,$legend,$data,'');
-
- echo'</br></br>';
-
-
-
-
-
- /********* EXEMPLE 4 (couleurs personnalisées) **********/
-
- // Titre du camembert
- $title = "EXEMPLE 4 (couleurs personnalisées) :";
-
- // Largeur du camembert
- $width = 750;
-
- // Hauteur du camembert
- $height = 400;
-
- // Tableau des légendes
- $legend = array('Titi','Toto','Tata','Les autres');
-
- // Tabeau des valeurs
- $data = array(16,25,2,34);
-
- // Tabeau des couleurs
- $color = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
-
- // On met en forme les légendes
- foreach($legend as $key => $value){
- if(strlen($value)>30){
- $lbl = substr($value,0,27).'...';
- }
- else{
- $lbl = str_pad($value,30,'.');
- }
- $legends2[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
- $datas2[] = $data[$key];
- $colors2[] = $color[$key];
- }
-
- // Tri par ordre décroissant
- array_multisort($datas2, SORT_DESC, $legends2, SORT_ASC, $colors2);
-
- // On crée l'image
- insertStatImage(1,$width,$height,$title,$legends2,$datas2,$colors2);
-
- echo'</br></br>';
-
-
-
-
-
- /********* EXEMPLE 5 (on passe une seule couleur et il s'occupe du dégradé) **********/
-
- // Titre du camembert
- $title = "EXEMPLE 5 (dégradé de couleurs) :";
-
- // Largeur du camembert
- $width = 750;
-
- // Hauteur du camembert
- $height = 400;
-
- // Tableau des légendes
- $legend = array('Titi','Toto','Tata','Les autres');
-
- // Tabeau des valeurs
- $data = array(38,28,7,37);
-
- // On met en forme les légendes
- foreach($legend as $key => $value){
- if(strlen($value)>30){
- $lbl = substr($value,0,27).'...';
- }
- else{
- $lbl = str_pad($value,30,'.');
- }
- $legends3[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
- $datas3[] = $data[$key];
- }
-
- // Tabeau des couleurs (on passe la couleur de base, il va créer un dégradé)
- $color = array('#5C69AA');
-
- // Tri par ordre décroissant
- array_multisort($datas3, SORT_DESC, $legends3, SORT_ASC);
-
- // On crée l'image
- insertStatImage(1,$width,$height,$title,$legends3,$datas3,$color);
-
- echo'</br></br>';
-
-
-
-
-
- /****************************************************** LES COURBES *****************************************************/
-
-
- /********* EXEMPLE 1 (Courbe simple...) **********/
-
- // Tableau des légendes
- $legend = array('Titi','Toto');
-
- // Tabeau des valeurs
- $data2[] = array(5,11,10,8,12,0);
- $data2[] = array(30,25,28,29,34,25);
-
- // Tabeau des couleurs
- $color2 = array('#5C69AA','#DF6C6C');
-
- $title = " EXEMPLE 1 (Courbe simple...)";
- $width = 750;
- $height = 500;
-
- insertStatImage(2,$width,$height,$title,$legend,$data2,$color2);
-
- echo'</br></br>';
-
-
-
- /********* EXEMPLE 2 (Des belles courbes...) **********/
-
- // Tableau des légendes
- $legend = array('Titi','Toto','Tata','Les autres');
- // Mise en forme des légendes
- foreach($legend as $key => $value){
- if(strlen($value)>15){
- $lbl = substr($value,0,14).'.';
- }
- else{
- $lbl = str_pad($value, 15 , ' ');
- }
- $legend[$key] = $lbl;
- }
-
- // Tabeau des valeurs
- $data3[] = array(0,9,8,0,5,15);
- $data3[] = array(12,16,18,25,28,20);
- $data3[] = array(5,11,10,8,12,0);
- $data3[] = array(30,25,28,29,34,25);
-
- // Tabeau des couleurs
- $color3 = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
-
- // Tableau des libelles de l'axe des abcisses
- $lblAbs = array('01/2008','02/2008','03/2008','04/2008','05/2008','06/2008');
-
- $title = " EXEMPLE 2 (Des belles courbes...)";
- $width = 750;
- $height = 500;
-
- insertStatImage(2,$width,$height,$title,$legend,$data3,$color3,$lblAbs);
-
- echo'</br></br>';
-
- ?>
- </body>
- </html>
<?php
session_start();
?>
<html>
<head>
<title>Exemple MyArtiChow</title>
</head>
<body>
<a href="index2.php">Version sans anti-alias</a>
<?php
// Permet de lancer un traitement lorsque toutes les images sont chargées...
$checkStatImagesOnAllComplete = 'alert("Toutes les images sont chargées !");';
// Include avec toutes mes fonctions qui vont bien...
include('artichow-1.1.0/statistiques_include.php');
/****************************************************** LES CAMEMBERTS *****************************************************/
/********* EXEMPLE 1 (simple) **********/
// Titre du camembert
$title = "EXEMPLE 1 (simple) :";
// Largeur du camembert
$width = 750;
// Hauteur du camembert
$height = 400;
// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Tabeau des valeurs
$data = array(38,28,7,37);
// On crée l'image
insertStatImage(1,$width,$height,$title,$legend,$data,'');
echo'</br></br>';
/********* EXEMPLE 2 (mise en forme des légendes) **********/
// Titre du camembert
$title = "EXEMPLE 2 (mise en forme des légendes) :";
// Largeur du camembert
$width = 750;
// Hauteur du camembert
$height = 400;
// Tableau des légendes
$legend = array('ABCDEF','GHIJKL','MNOPQRS','TUVWXYZ');
// Tabeau des valeurs
$data = array(110,25,86,42);
// On met en forme les légendes
foreach($legend as $key => $value){
if(strlen($value)>30){
$lbl = substr($value,0,27).'...';
}
else{
$lbl = str_pad($value,30,'.');
}
$legends[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
$datas[] = $data[$key];
}
// On crée l'image
insertStatImage(1,$width,$height,$title,$legends,$datas,'');
echo'</br></br>';
/********* EXEMPLE 3 (tri par ordre décroissant) **********/
// Titre du camembert
$title = "EXEMPLE 3 (tri par ordre décroissant) :";
// Largeur du camembert
$width = 750;
// Hauteur du camembert
$height = 400;
// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Tabeau des valeurs
$data = array(16,25,2,34);
// Tri par ordre décroissant
array_multisort($data, SORT_DESC, $legend, SORT_ASC);
// On crée l'image
insertStatImage(1,$width,$height,$title,$legend,$data,'');
echo'</br></br>';
/********* EXEMPLE 4 (couleurs personnalisées) **********/
// Titre du camembert
$title = "EXEMPLE 4 (couleurs personnalisées) :";
// Largeur du camembert
$width = 750;
// Hauteur du camembert
$height = 400;
// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Tabeau des valeurs
$data = array(16,25,2,34);
// Tabeau des couleurs
$color = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
// On met en forme les légendes
foreach($legend as $key => $value){
if(strlen($value)>30){
$lbl = substr($value,0,27).'...';
}
else{
$lbl = str_pad($value,30,'.');
}
$legends2[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
$datas2[] = $data[$key];
$colors2[] = $color[$key];
}
// Tri par ordre décroissant
array_multisort($datas2, SORT_DESC, $legends2, SORT_ASC, $colors2);
// On crée l'image
insertStatImage(1,$width,$height,$title,$legends2,$datas2,$colors2);
echo'</br></br>';
/********* EXEMPLE 5 (on passe une seule couleur et il s'occupe du dégradé) **********/
// Titre du camembert
$title = "EXEMPLE 5 (dégradé de couleurs) :";
// Largeur du camembert
$width = 750;
// Hauteur du camembert
$height = 400;
// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Tabeau des valeurs
$data = array(38,28,7,37);
// On met en forme les légendes
foreach($legend as $key => $value){
if(strlen($value)>30){
$lbl = substr($value,0,27).'...';
}
else{
$lbl = str_pad($value,30,'.');
}
$legends3[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
$datas3[] = $data[$key];
}
// Tabeau des couleurs (on passe la couleur de base, il va créer un dégradé)
$color = array('#5C69AA');
// Tri par ordre décroissant
array_multisort($datas3, SORT_DESC, $legends3, SORT_ASC);
// On crée l'image
insertStatImage(1,$width,$height,$title,$legends3,$datas3,$color);
echo'</br></br>';
/****************************************************** LES COURBES *****************************************************/
/********* EXEMPLE 1 (Courbe simple...) **********/
// Tableau des légendes
$legend = array('Titi','Toto');
// Tabeau des valeurs
$data2[] = array(5,11,10,8,12,0);
$data2[] = array(30,25,28,29,34,25);
// Tabeau des couleurs
$color2 = array('#5C69AA','#DF6C6C');
$title = " EXEMPLE 1 (Courbe simple...)";
$width = 750;
$height = 500;
insertStatImage(2,$width,$height,$title,$legend,$data2,$color2);
echo'</br></br>';
/********* EXEMPLE 2 (Des belles courbes...) **********/
// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Mise en forme des légendes
foreach($legend as $key => $value){
if(strlen($value)>15){
$lbl = substr($value,0,14).'.';
}
else{
$lbl = str_pad($value, 15 , ' ');
}
$legend[$key] = $lbl;
}
// Tabeau des valeurs
$data3[] = array(0,9,8,0,5,15);
$data3[] = array(12,16,18,25,28,20);
$data3[] = array(5,11,10,8,12,0);
$data3[] = array(30,25,28,29,34,25);
// Tabeau des couleurs
$color3 = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
// Tableau des libelles de l'axe des abcisses
$lblAbs = array('01/2008','02/2008','03/2008','04/2008','05/2008','06/2008');
$title = " EXEMPLE 2 (Des belles courbes...)";
$width = 750;
$height = 500;
insertStatImage(2,$width,$height,$title,$legend,$data3,$color3,$lblAbs);
echo'</br></br>';
?>
</body>
</html>
Conclusion
Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)
Tout est dans le zip !
Historique
- 07 juillet 2008 18:42:00 :
- Ajout des courbes.
Amélioration du preload.
Possibilité de passer une seule couleur lors de la création d'un camembert, les autres seront générées en dégradé.
- 07 juillet 2008 18:45:19 :
- Mise à jour de la capture
- 07 juillet 2008 18:45:57 :
- Mise à jour de la capture
- 07 juillet 2008 18:48:14 :
- Mise à jour de la capture
- 10 juillet 2008 11:52:00 :
- Création d'un numéro de version pour mieux m'y repérer (je suis passé direct à la v2 !!!)
Amélioration du code généré, du preload (encore !)
Modification du système de génération des images, l'ancien système (envoi direct des images par le fichier php) ne permettait pas d'utiliser les fonctionnalités du clic droit sur une image (sous IE) et ne permettait pas d'imprimer la page (une image d'erreur rouge apparaissait à la place des graphiques).
Le nouveau système autorise toutes les fonctionnalités du clic droit : enregistrer l'image, envoyer par email, imprimer l'image, et même copier l'image puis coller dans word, excel, powerpoint etc...
Ajout de la possibilité de lancer des commandes javascript une fois toutes les images chargées (je m'en sert par exemple pour lancer l'impression afin de ne pas imprimer les image 'en cours de chargement'...)
Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)
- 11 juillet 2008 10:07:26 :
- Il ne faut pas remettre à demain ce que l'on peut faire le jour même !!! ajout de l'option pour désactiver l'antialias lors de l'appel de la fonction insertStatImage, et effectivement les images sont beaucoup moins longues à générer !!! (voir exemple de camembert N°1)
insertStatImage($imageType,$width,$height,$title,$legend,$data,$color,$lblAbs=NULL,$antiAlias=TRUE)
- 11 juillet 2008 11:01:54 :
- Mise à jour du zip qui contient maintenant 2 fichiers d'exemple, un avec antialias et un sans !! cela permet de faire des tests de performance et chez moi sans antialias la page met environ 4 a 5 secondes à se charger et avec antialias c'est plutôt 14 a 15 secondes !!! dans mes formulaires qui génèrent des graphiques je laisse maintenant le choix à l'utilisateur entre qualité 'standard' et qualité 'haute' ....
- 17 juillet 2008 12:03:02 :
- J'ai simplement refait le zip en vidant le dossier cache qui contenait tout mes tests !!!
- 17 juillet 2008 12:13:05 :
- Ben finalement j'ai remis les quelques fichiers de l'exemple dans le dossier cache sinon QuickZip ne prend carrément pas le dossier cache !!....
- 06 août 2008 14:17:27 :
- Correction d'une erreur de libellé....
- 07 août 2008 12:50:14 :
- Création d'un nouvel exemple avec la fonction de dégradé de couleurs (on ne passe que la couleur de base et les autres sont calculées...)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Statistique graphique, pourquoi ne parler que de JPgraph ? [ par crazygogo ]
Pourquoi JPGRAPH ??? payant pour les sociétés.... alors qu'il existe ArtiChow : http://www.artichow.orgje fais de la pub pour ma source mais elle perm
Graphique dynamique librairie Artichow [ par aforpien ]
Bonjour à tous, J'essaie de créer un graphique dynamique pour afficher le nombre de requetes par secondes sur une base MYSQL. J'ai d'abord cherché du
Base de données et courbe graphique [ par jeremy77 ]
Bonjour,Je suis débutant en php ... .Savez-vous si est possible de ce servire d'une table venant d'une base de données comme coordonées pour une courb
graphique en courbe avec liaison mysql [ par jeremy77 ]
Bonjour a tous,(Je suis débutant en php)Dans le cadre de réaliser une chart boursier en php, j'ai reussi a faire apparaitre un graphique en courbe a l
graphique et base de données [ par jeremy77 ]
Bonjour,Apres avoir réalisé un graphique en courbe avec liaison a ma base de donnes (c'est à dire que les coordonées de ma courbe sont des valeurs réc
Générer une palette graphique [ par bthivent ]
Bonjour j'aimerai savoir comment générer une palette graphique, automatiquement, avec le plus de couleurs possible, et que l'ont puisse cliquer dessus
Affichage de graphique [ par nbenoist ]
sur RedHat 7.2 J'ai une page php qui lit un fichier de log. Ma page php me affiche 2 camenbert suivant les informations du fichier log. J'ai mis les
Probleme vraiment bizzard [ par papipsycho ]
bonjour voila je vous enonce mon probleme dans mon kit graphique je mais un <form name=form_login ect...> et bien quand je le mais s
diagramme camembert [ par emma1006 ]
Bonjour,J'ai trouvé un super code source sur le site :http://www.metacites.net/article132.htmlil correspond vraiment à ce que je voudrais fa
librairie graphique [ par bm67 ]
Je travaille avec easyphp1.7 Lorsque je cherche à créer un rectangle.Voilà ce que j'obtiens. Les fonctions employées sont activ
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|