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.

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