Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STATISTIQUE GRAPHIQUE (COMPOSANT ARTICHOW)


Information sur la source

Catégorie :Graphique Classé sous : graphique, camembert, statistique, artichow, courbe Niveau : Débutant Date de création : 01/07/2008 Date de mise à jour : 07/08/2008 12:50:10 Vu / téléchargé: 3 553 / 219

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (50)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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 !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger 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