Utilizzo di cookies
Script GD libray con PHP Modelli Creare immagine Colore e trasparenza Disegnare Pennelli Misurare Filtri Testo Copy Salvare Miscellanea
GD library con PHP
Diagramma circolare 3D con legende circolari e standard
Produzione olio regioni italiane


e-book
cartaceo
Abruzzo: Calabria: Campania:
Lazio: Puglia: Sicilia:
Toscana: Umbria: Altri:
Cambiare i valori e premere
diagramma circolare 3d
Con minimi cambiamenti rispetto al grafico Diagramma circolare con legende circolari e standard è possibile creare l'effetto 3d.


Il primo passo è creare un nuovo elenco di colori leggermente diversi da quegli in uso, usare poi questo nuovo elenco per l'effetto 3d. 
Le differenze sono:


$Totale = array_sum($Valori); // totale quintali rappresentati
$Colori = array();
$ColoreIniziale = 18;
for($i=$ColoreIniziale; $i < ($ColoreIniziale+ count($Valori)); $i++)
{$ColoreRGB = GeneraColori($i , $ColoreIniziale+ count($Valori)); // genera colori
$Colori[$i - $ColoreIniziale] = imagecolorallocate($Immagine, $ColoreRGB[0], $ColoreRGB[1], $ColoreRGB[2]);
// Sposta verso destra i bit canale colore
$Colori[$i] = imagecolorallocate($Immagine, $ColoreRGB[0]>>1, $ColoreRGB[1]>>1, $ColoreRGB[2]>>1);//colore per 3D
}


Il secondo passo è  disegnare delle circonferenze per creare l'effetto tridimensionale
La variabile $i sposta sull'asse Y il centro della circonferenza del quale l'arco fa parte  disegnando 30 circonferenze formate da archi dei colori corrispondenti alle regioni. 
IMG_ARC_NOFILL indica che l'arco che congiunge l'angolo di partenza e quello di arrivo sono sottolineati ma non è riempita l'area circoscritta.
Notare che vengono usate le tonalità scure colori  
for($i= 0;$i<30;$i++){
foreach($Valori as $index => $V ) { // scorre array $Valori e $Colori, disegnando gli archi
$Arco = number_format((360 * $V) / $Totale); // dimensioni angolo/arco corrente
imagefilledarc($Immagine,
$Cx, $Cy + $i, //  coordinate x,y del centro
$Raggio, $Raggio, 
$InizioArco,
($InizioArco + $Arco), // fine arco
$Colori[$index + $ColoreIniziale], // colore corrente per 3D
IMG_ARC_NOFILL // area circoscritta è riempita con $Colori[$index + $ColoreIniziale]
);
$InizioArco += $Arco; // inizio nuovo arco
}
}
imagepng($Immagine,"es_110_grafico_a_torta_3d_1.png"); // salva immagine intermedia