# PChart

pChart est une bibliothèque graphique développée en PHP. Son nom est une abréviation de PHP Chart. Disponible sous la licence GPL pour les applications non commerciales, pChart peut être utilisé librement. Les applications commerciales doivent faire l'achat d'une licence pour être en règle. Les institutions du domaine public dans le domaine de la recherche disposent d'une licence gratuite.
pChart a été développé sous forme de classes afin de respecter la logique de la programmation objet. Une attention particulière a été portée sur la qualité esthétique des images générées. Cette bibliothèque est exécutée sur le serveur web et rajoute donc une charge supplémentaire. Afin de limiter l'utilisation des ressources, un module de cache serveur est disponible.
À ce jour, la bibliothèque intègre un nombre croissant de fonctions statistiques. Les images générées sont nativement intégrables sur tous sites web.
Cette bibliothèque peut également être utilisée comme une simple classe graphique permettant de créer des images ou des codes barre qui seront par la suite intégrés dans des supports plus complexes comme les PDFs.

## Histoire

La première version de pChart a été publiée le 21 mai 2008 (version 1.22 beta). Un retour utilisateur très positif a été reçu de la communauté internet, le projet a ainsi commencé à évoluer. Plusieurs sous-versions ont vu le jour (toujours marquées comme étant bêta) implémentant les fonctions demandées par la communauté des utilisateurs qui commençait alors à se former. Le développement de la v1.x se termina fin 2008 avec la version 1.27d. Cette version toujours activement téléchargée et utilisée n'est aujourd'hui plus maintenue et les utilisateurs sont invités à passer sur la deuxième génération 2.x.
La seconde version de la bibliothèque graphique pChart a été mise à disposition du public fin 2010. Le code source ayant été complètement réécrit en prenant en compte les forces et les faiblesses de la première mouture afin de proposer une version plus facilement évoluable et respectant les standards de la programmation objet. Cette version plus rapide et plus belle que la première a rapidement évolué en prenant en compte les remarques provenant de la communauté open source.
Cette nouvelle version a été écrite sur les bases suivantes :
* Support des alpha channels pour la transparence.
* Vitesse de calcul accélérée.
* Support natif pour les ombres.
* Meilleure configuration des axes.
* Fonctions de dessin pour les codes barres.
* Concept de classes et d'extensions.

## Fonctions

La version actuelle de pChart (2.1.2) propose des fonctions adaptées à la création des graphiques les plus communs : points, lignes, courbes de Bézier, steps, splitted, graphs empilées, camemberts, financiers, bulles… En utilisant les classes complémentaires fournies avec la bibliothèque il est également possible de créer des codes barres (code 39 et code 128), des diagrammes de forces, des indicateurs et des graphs de surface.
Il est aujourd'hui facilement possible d'ajouter de nouvelles fonctions en créant de nouvelles classes héritant des fonctions communes de dessins de la classe principale.
Un système de bac à sable est fourni dans l'archive de la bibliothèque et permet de réaliser rapidement et de façon visuelle le code PHP générant les graphs. Depuis quelques versions, la bibliothèque tend à évoluer dans le domaine scientifique en proposant de plus en plus de fonctions mathématiques permettant de directement travailler sur les blocs de données.
pChart propose un système de cache intégré appelé pCache qui permet de diminuer la charge du serveur web en gérant un cache local. Les images générées sont sauvées dans ce cache et directement extraites lors des autres appels clients au même graphique.

## Communauté

La communauté des utilisateurs peut proposer les lignes directrices des futures versions via une liste de souhaits partagée où chacun peut voter pour la fonction manquante qui lui semble être la plus importante. Il existe également un forum d'aide dédié ou les utilisateurs peuvent s'entraider.
Il existe des implémentations sous forme de greffons de pChart mais également des tutoriels en ligne$^,$$^,$. La bibliothèque a également été portée dans le langage ruby.