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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
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 Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|