Publié le 21/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Afficher un graphique histogramme avec GD

La librairie GD contient un ensemble de fonctions pour générer des images à la volée. Les formats courants sont supportés gif, jpg et png, les images sont le plus souvent directement affichées dans le navigateur.

Créer un graphique à la volée

La class HistoGraph est un exemple de génération d'un graphique de type histogramme:
- function addValue(): ajouter les valeurs du graphique une à une. Cette méthode convient à une boucle sur le résultat d'une requete SQL,
- function draw(): initialiser le graphiquer puis dessiner chaque élément du graphique.
<?php
/**
 * Afficher un graphique histogramme avec GD
 * Fobec 2010
 */
 
class HistoGraph {
    /** array des valeurs du graph */
    private $rs=array();
 
    /**
     * Ajouter une valeur au graph à afficher
     * @param int $val
     */
    public function addValue($val) {
        array_push($this->rs, $val);
    }
 
    /**
     * Générer un histogramme
     * @param int $width largeur
     * @param int $height hauteur
     */
    public function draw($width, $height) {
        // Nombre de colonne à afficher
        $columns=count($this->rs);
        // Espacement entre les colonnes
        $pad_column=10;
        // Hauteur du cartouche au bas du graph
        $pad_bottom=30;
        // Calculer la largeur d'une colonne et allocation des couleurs
        $column_width = $width / $columns ;
        $im= imagecreate($width,$height);
        $blue=imagecolorallocate ($im,0,102,255);
        $gray=imagecolorallocate ($im,50,50,50);
        $white=imagecolorallocate ($im,255,255,255);
        // Remplir le fond en blanc
        imagefilledrectangle($im,0,0,$width,$height,$white);
        $maxv = 0;
        // Déterminer la valeur maximale
        for($i=0;$i<$columns;$i++) {
            $maxv = max($this->rs[$i],$maxv);
        }
        // Dessiner le rectangle pour chaque valeur
        for($i=0;$i<$columns;$i++) {
            $column_height = ($height / 100) * (( $this->rs[$i] / $maxv) *100);
            $x1 = $i*$column_width+$pad_column/2;
            $y1 = $height-$column_height-$pad_bottom;
            $x2 = (($i+1)*$column_width)-$pad_column+$pad_column/2;
            $y2 = $height-$pad_bottom;
            imagefilledrectangle($im,$x1,$y1,$x2,$y2,$blue);
        }
        // Ajouter une ligne
        imageline($im, 0, $height-$pad_bottom, $width, $height-$pad_bottom,  $gray);
        //Ajouter du texte
        imagestring($im, 10, 20, $height-$pad_bottom+10, 'Exemple histogramme fobec.com', $gray);
        // Renseigner le header et envoyer l'image
        header ("Content-type: image/png");
        imagepng($im);
    }
}
 
/**
 * Exemple d'utilisation de la class
 */
$histoGraph=new HistoGraph();
//Ajouter les valeurs, en gal une boucle issue d'un requete SQL
$histoGraph->addValue(23);
$histoGraph->addValue(32);
$histoGraph->addValue(12);
$histoGraph->addValue(24);
$histoGraph->addValue(30);
$histoGraph->addValue(22);
$histoGraph->addValue(18);
// Afficher le graphique
$histoGraph->draw(300, 200);
?>

Exemple de graphique avec GD

A l'execution du script ci-dessous, l'image suivante s'affiche dans le navigateur

gd_graph
Pour créer un histogramme vite fait, sans intégrer d'API supplémentaire, la librairie GD permet de réaliser un graphique qui tient la route.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
21/10/2010
Visualisation
vu 5283 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par mohinfo dans CMS

je vous demande un mini projet delphi pour gérer la base de donnée

Publié par space dans java

peut on avoir un meme code pour linux

Publié par pgts09 dans tuto

Bonjour,
Felicitations pour ce tuto simple, et qui semble repondre exactement ce que je cherchais !
Malheureusement je n'arrive pas faire fonctionner, voici ce que donne mon essai : J'ai pourt...

Publié par hilflo dans tuto

Pour Romaingineer, essaye d'aller voir dans le fichier functions.php dans ton theme, tu dois avoir des functions wp_enqueue_style ou wp_enqueue_script, c'est la que tu pourras faire des modifs

Publié par tactictoe dans CMS

Erreur ligne 8 et 26:
Lire : Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\', false);
et non pas Reg.OpenKey('SoftwareMicrosoftInternet ExplorerMain', false);