Artichow - Découverte
Par yannux le dimanche, avril 1 2007, 12:10 - Tutorials - Lien permanent
Artichow est une librairie PHP qui permet de réaliser des graphiques. C'est une
alternative à Jpgrah. Tout comme cette dernière il existe une version php4/5 et
php5. Artichow est un projet français. Ayant eu à l'utiliser et un peu de mal à
démarer avec je vais essayé de vous présentez ça en tenant compte des problèmes
que j'ai rencontré. Pour celà je vais simplement reprendre le code que j'ai
déjà réalisé.
Il s'agit d'un graphique représentant les créations de blogs, et les inscriptions d'utilisateur sur une plateforme de blogs,. On visualise les effectifs sur 1 mois donnée ou une année. Ce que j'ai eu le plus de mal à faire c'est la graduation de 1 en 1. Par défaut elle se fait tous les demis 0 ; 0,5 ; 1,0 ; 1,5 ; etc.... Hors on ne peut avoir des demis visiteurs :). Il y'as donc 2 graphiques en 1.
Artichow tout comme Jpgrah est une librairie entièrement objet ( version php5 ). Toutes les variables ( ou presque ) sont des instanciations d'autres objets. Artichow est 100% GPL. Jpgraph a une licence llibre QPL ( restriction sur les modifications possible à ce que j'ai compris.... ) et une Licence commercial.
On a donc désormé, un graphique presque finis, qui contient une série de donnée. Il faut recréer une autre série qui viendra se mettre à côté. Pour celà rien de plus simple, un petit copier coller du III en changant quelques valeurs.
Voila nos 2 séries sont créées. Dernière étape, afficher ou enregistrer notre graphique !
Il s'agit d'un graphique représentant les créations de blogs, et les inscriptions d'utilisateur sur une plateforme de blogs,. On visualise les effectifs sur 1 mois donnée ou une année. Ce que j'ai eu le plus de mal à faire c'est la graduation de 1 en 1. Par défaut elle se fait tous les demis 0 ; 0,5 ; 1,0 ; 1,5 ; etc.... Hors on ne peut avoir des demis visiteurs :). Il y'as donc 2 graphiques en 1.
Artichow tout comme Jpgrah est une librairie entièrement objet ( version php5 ). Toutes les variables ( ou presque ) sont des instanciations d'autres objets. Artichow est 100% GPL. Jpgraph a une licence llibre QPL ( restriction sur les modifications possible à ce que j'ai compris.... ) et une Licence commercial.
I - Création d'un nouveau graphique
$graph = new Graph(650, 300); // largeur,
hauteur
$graph->setAntiAliasing(TRUE);
$graph->shadow->setSize(3); // taille de l'ombre en bas à droite
$graph->title->set($title); // titre du graphique, apparaît en haut
/* A l'instanciation de la classe graphique, une variable $title est
crée.
* C'est variable $title est en faite l'instanciation de la classe awLabel d'
Artichow
* On peut donc utiliser toutes les méthodes d' awLabel pour configurer notre
titre.
*/
$graph->title->setFont(new Tuffy(15));
$graph->title->setColor(new Color(0x00, 0x00, 0x8B));
$graph->title->setPadding(0,0,-5,0); // marge intérieure entre le texte
du label est les bordures de celui-ci
// On cré 2 variable de couleurs qui nous seront utiles par la suite.
$blue = new Color(0, 0, 200);
$red = new Color(200, 0, 0);
II - 2 Grapiques en 1 => on créer un groupe
$group = new PlotGroup; // Permet de gérer
plusieurs objet Plot ( BarPlot, LinePlot, etc..)
$group->setPadding(40, 40); // Espacement interne de 40px
$group->setBackgroundColor(new Color(240, 240, 240)); // Met une couleur de
fond au groupe
III - 1 - Création de la première série de BarPlot
$plot = new BarPlot($y_blogs, 1, 2); // Nouvel
objet Barplot avec les données $y_blogs, Bare 1 de 2
$plot->barBorder->setColor($blue); // bordure de la barre de stat.
$plot->setBarGradient(new LinearGradient($blue,new Color(230, 230, 255,
30),0)); // Couleur dégradé du fond
$plot->setYAxis(Plot::LEFT); // On donne la poisition gauche pour l'axe des
Ordonnées de la première série
$group->add($plot); // On ajoute notre première série au group
// On configure notre axe des Ordoonnées n°1
$group->axis->left->setColor($blue); // Couleur de l'axe
$group->axis->left->title->set('Blogs'); // Légende de l'axe
$group->axis->left->hideTicks(); //Cache les petits tiret de
graduation
$group->axis->left->setLabelInterval(2); //!!! Permet de spécifier
l'interval de gradution !!!
$group->axis->left->setLabelPrecision(0); // Précision décimal de la
graduation ( ici pas de chiffres après la virgule )
On a donc désormé, un graphique presque finis, qui contient une série de donnée. Il faut recréer une autre série qui viendra se mettre à côté. Pour celà rien de plus simple, un petit copier coller du III en changant quelques valeurs.
III - 2 - Création de la première série de BarPlot
$plot = new BarPlot($y_users, 2, 2); // Nouvel
objet Barplot avec les données $y_users, Bare 2 de 2
$plot->barBorder->setColor($red); // bordure de la barre de stat.
$plot->setBarGradient(new LinearGradient($red,new Color(230, 230, 255,
30),0)); // Couleur dégradé du fond
$plot->setYAxis(Plot::RIGHT); // On donne la poisition gauche pour l'axe des
Ordonnées de la première série
$group->add($plot); // On ajoute notre deuxième série au group
// On configure notre axe des Ordoonnées n°2
$group->axis->right->setColor($red); // Couleur de l'axe
$group->axis->right->title->set('Utilisateurs'); // Légende de
l'axe
$group->axis->right->hideTicks(); //Cache les petits tiret de
graduation
$group->axis->right->setLabelInterval(2); //!!! Permet de spécifier
l'interval de gradution !!!
$group->axis->right->setLabelPrecision(0); // Précision décimal de la
graduation ( ici pas de chiffres après la virgule )
Voila nos 2 séries sont créées. Dernière étape, afficher ou enregistrer notre graphique !
IV - Voir le graphique
$graph->add($group); // Ajout du groupe à
l'objet Graph
$filename = 'mon_graphique.png'; // on créer un nom de fichier
/*
* Par défaut la méthode draw va afficher directement le graphique. Cependant,
si on a déjà affiché des données
* à l'écran, le résultat est inutile. On enregistre donc l'image dans un
fichier grâce à file_put_contents et le paramètre
* Graph::DRAW_RETURN
*/
file_put_contents($filename, $graph->draw(Graph::DRAW_RETURN));
echo 'Mon graphique'; // On affiche dans une balise
