Creare Grafici in PHP con PHPLOT
There was a problem loading image 'mambots/editors/jce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif'
There was a problem loading image 'mambots/editors/jce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif'
There was a problem loading image 'mambots/editors/jce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif'
There was a problem loading image 'mambots/editors/jce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif'
Questa libreria consente di creare immagini "al volo" partendo da un manciata di dati e da qualche riga di codice.
Tale libreria è presente nei pacchetti di installazione di PHP dalla versione 4.3.0 in poi. Per le versioni successive occorre installarla separatamente.Per vedere se la libreria è abilitata nel nostro php è sufficiente usare la funzione phpinfo(). La voce "G Per abilitare la libreria GD basta aggiungere sul file php.ini la riga
extension = php_gd.dll
extension = php_gd.sose il server è UNIX o UinxLIKE.
Bene, una volta certi che la libreria GD sia fruibile dal sistema possiamo cominciare a costruire grafici, disegni, testo, etc., etc...
Logicamente dovremmo scrivere un bel po' di codice per riuscire a creare un grafico...
Un esempio? Proviamo a disegnare un'ellisse:
<?php
//dichiaro gli header
Header("Content-type: image/png");
//imposto le dimensioni dell'immagine
$height = 200;
$width = 150;
//Creo l'istanza dell'oggetto immagine
$immagine = ImageCreate($width, $height)
or die
("Impossibile creare immagine");
//imposto il colore dello sfondo
$Sfondo = ImageColorAllocate($immagine, 255,255,255);
//imposto il colore dello dell'ellisse
$colore = ImageColorAllocate($immagine, 0, 153, 0);
//Creo l'ellisse
imageellipse($immagine, 70, 100, 100, 198, $colore);
//invio l'immagine
ImagePNG($immagine);
?>
Header("Content-type: image/png");
$height = 320;
$width = 200;
$immagine = ImageCreate($width, $height) or die ("Impossibile creare immagine");
In caso di errore php interrompe l'esecuzione dello script visualizzando il messaggio "Impossibile creare immagine".
$Sfondo = ImageColorAllocate($immagine, 255,255,255);
$colore = ImageColorAllocate($immagine, 0, 153, 0);
La seconda chiamata imposterà soltanto il colore senza attribuirlo a nessun oggetto.
imageellipse($immagine, 150, 150, 100, 200, $colore);
la larghezza, l'altezza ed il colore specificato prima.
A questo punto l'immagine è pronta, non resta che mandarla al browser con il comando
ImagePNG($immagine);
Se abbiamo scritto tutto correttamente otterremo l'immagine riportata in figura 1.
Senza tener presente che poi dovremmo realizzare gli script in modo che siano flessibili, difficilmente il programmatore realizza una soluzione che va bene al primo tentativo, e parlo per esperienza provata in prima persona.
Puoi seguire fedelmente quel che chi ti richiede il lavoro ti ha commissionato, magari anticipando anche la soluzione a problematiche che in sede di analisi con il committente non erano insorte, ma avranno sempre da ridire!
Vuoi il colore degli istogrammi, vuoi che preferiscono le percentuali al posto dei valori assoluti, vuoi che la griglia è troppo o troppo poco marcata, etc.. etc..
Cos'è un computer?
La mia Opera Prima!
Approfitta ora delle offerte Black Friday/Cyber Monday/Natale per acquistarlo con sconto nei circuiti delle librerie online!
Che cos'è un computer? Scopriamolo insieme facendo quattro chiacchiere tra amici. Qui troverai parole semplici e paragoni efficaci che spiegano ai “non addetti ai lavori” i concetti alla base dell'uso dei computer. Seguimi in questo viaggio dove ti spiegherò cosa c’è “sotto il cofano” in modo che la prossima volta che dovrai scegliere un portatile ed il commesso ti chiederà se vuoi un processore Intel o AMD, se ti bastano 4Gb di RAM o 500Gb di disco, saprai cosa rispondere.
Inizia a leggere le prime pagine, vedi come, con un linguaggio semplice e fludio, spiego i concetti base dell'informatica e del computer! >>LEGGI L'ANTEPRIMA!<<
Formato:11,4x17,2 cm
Foliazione:156
Copertina: morbida
Interno: bn
Supporti disponibili: Cartace/eBook
Scheda del libro
in vendita presso:

C'è da impazzire!
Per fortuna però c'è già chi ci è impazzito prima di noi, e che, grazie alla sua infinita magnanimità, ha realizzato e messo a disposizione sotto licenza GNU GPL una classe PHP che in due righe di codice genera qualsiasi tipo di grafico!
Sto parlando di PHPlot, disponibile per il download sul sito ufficiale http://www.phplot.com. Interamente basata sulla libreria GD, la classe PHPLOT si frappone fra il programmatore e la libreria stessa, limitando drasticamente la quantità di codice da inserire per poter ottenere grafici che nulla hanno da invidiare all'aspetto e alle funzionalità di quelli che si possono ottenere con i fogli di calcolo ed i sistemi di Business Intelligence più famosi (e costosi).
Un esempio?
Bhè, cominciamo a preparare l'ambiente... Luce soffusa, musica di sottofondo, incenso che espande voluttuosi fili di fumo a carezzare l'impalpabile aria della stanza, la libreria GD, i file PHPLOT in una cartella all'interno del web server.

Ok, ora che abbiamo creato un ottimo ambientino cominciamo a fare conoscenza!
Che ne dite di un bel istogramma?
detto-fatto!
<?PHP
//carico il file della classe
include_once("phplot.php");
//imposto la dimensione dell'immagine
$xsize_in="350";
$ysize_in="250";
//imposto la matrice che contiene i dati
$dati = array(
array("ACCESSORIES", 34.249,50),
array("APPAREL", 11.167,30),
array("FOOTWEAR", 6.820,00)
);
//imposto il titolo delle ascisse
$title_X="Categorie";
//e quello delle ordinate
$title_Y="Ammontare (Euro)";
//creo l'istanza dell'oggetto
$graph = new PHPlot($xsize_in, $ysize_in);
//specifico alla classe che non devo
//creare un'immagine da spedire al browser
$graph->SetPrintImage(false);
$graph->SetIsInline(true);
//imposto il formato dell'immagine
$graph->SetFileFormat("gif");
//imposto il nome del file che conterrà l'immagine
$graph->SetOutputFile("img/bars_graph.gif");
//passo la matrice che contiene i dati
$graph->SetDataValues($dati);
//specifico il tipo dati
$graph->SetDataType("text-data");
//indico il tipo di grafico
$graph->SetPlotType("Bars");
//imposto un titolo per il grafico
$graph->SetTitle("Valore Magazzino");
//inserisco i titoli sugli assi
$graph->SetXLabel($title_X);
$graph->SetYLabel($title_Y);
//imposto il tipo di dati inseriti nell'asse delle ordinate.
$graph->SetYGridLabelType("data");
//non visualizzare i numeri sull'asse delle ascisse
$graph->SetHorizTickIncrement(10);
//imposto un celeste come colore degli istogrammi
$graph->SetDataColors("#99ccee");
//disegno il grafico
$graph->DrawGraph();
//e lo scrivo nel file
$graph->PrintImage();
?>
<!-- richiamo l'immagine appena creata -->
<img xsrc="img/bars_graph.gif">
include_once("phplot.php");
$xsize_in="350";
$ysize_in="250";
$dati = array(
array("ACCESSORIES", 34.249,50),
array("APPAREL", 11.167,30),
array("FOOTWEAR", 6.820,00)
);
$title_X="Categorie";
$title_Y="Ammontare (Euro)";
$graph = new PHPlot($xsize_in, $ysize_in);
$graph->SetPrintImage(false);
$graph->SetIsInline(true);
$graph->SetFileFormat("gif");
La versione più recente della libreria GD supporta i file GIF, JPEG, e PNG. Visto che si deve generare immagini visibili da browser, queste estensioni sono più che soddisfacenti.
$graph->SetOutputFile("img/bars_graph.gif");
$graph->SetDataValues($dati);
$graph->SetDataType("text-data");
Nel nostro caso array("ACCESSORIES", 34.249,50) "ACCESSORIES" verrà visualizzato sulle ascisse, "34.249,50" verrà visualizzato sulle ordinate.
$graph->SetPlotType("Bars");
$graph->SetTitle("Valore Magazzino");
$graph->SetXLabel($title_X);
$graph->SetYLabel($title_Y);
$graph->SetYGridLabelType("data");
PHPLOT elabora i dati con la funzione number_format di php. Per poter visualizzare i dati come valuta in Euro dobbiamo modificare il file phplot.php
cambiando le righe 2292 e 2307 da
$lab = number_format($which_lab, $this->y_precision, '.', ',').$this->data_units_text;
$lab = number_format($which_lab, 2, ',', '.').$this->data_units_text;
$graph->SetHorizTickIncrement(10);
$graph->SetDataColors("#99ccee");
$graph->DrawGraph();
$graph->PrintImage();
A questo punto non ci rimane che richiamare l'immagine appena creata
<img xsrc="img/bars_graph.gif">
Grafici molto più complessi richiedono qualche riga in più, ma tutto sommato direi che il risultato che otteniamo è stupefacente se paragonato a quel che avremmo dovuto fare con la sola libreria GD!
{max_sb_discuss:19}