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
Grafico lineare
andamento titolo azionario


e-book
cartaceo


Il grafico simula l'andamento di un ipotetico titolo azionario per 30 giorni.


I valori del titolo sono creati in modo casuale in un range fra 1 e 550 compresi.


Questi valori si rinnovano automaticamente ad ogni lancio dello script dando grafici sempre diversi.


Vengono disegnate sull'asse x  i giorni, e sull'asse y la scala dei valori.


Parallele all'asse x, sono disegnate linee intermedie per meglio leggere il grafico.


Il font usato è arial.ttf 


<?php 
$Giorno = array(); // dichiara array dei giorni
$gg=1; // giorno del mese
for($x=1; $x<31; $x++)
{
$NumeroMinimo = 1; $NumeroMassimo = 550;
$n = rand($NumeroMinimo,$NumeroMassimo);  
$Prezzo[$gg] = $n; // immette in ciascun giorno il prezzo come valore casuale fra 1 e 100 
$gg++;
}


// Crea immagine truecolor di 350x280 pixel
$Immagine = imagecreatetruecolor(1240,600 );


// colore di fondo nel grafico
$Grigio = imagecolorallocate($Immagine, 200, 200, 200); 


// Riempire lo sfondo con il colore selezionato in precedenza
imagefill($Immagine, 0, 0, $Grigio);
$Rosso = imagecolorallocate($Immagine,255,0,0); // valori ed etichette sulle coordinate
$Verde = imagecolorallocate($Immagine,0,102,0); // Linea del grafico
$Nero = imagecolorallocate($Immagine,0,0,0);  // colore per ascisse ed ordinate
imagesetthickness($Immagine, 3); // larghezza tratto di 3 pixel                


// disegna ascisse ed ordinate 
imageline($Immagine, 40, 5, 40, 560, $Nero ); // X
imageline($Immagine, 40, 560, 1240, 560, $Nero ); // Y


imagesetthickness($Immagine, 1);  // larghezza tratte di 1 pixel
$Giallo = imagecolorallocate($Immagine, 255, 255, 0);


// linee orizzontali tratteggiate gialle
$style = array(
$Giallo, $Giallo, $Giallo, $Giallo, $Giallo, 
IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT);
imagesetstyle($Immagine, $style);
$S = 500;
for($y=60;$y<470;$y+=100)
{
imagestring($Immagine, 3, 18, $y, $S , $Giallo); // valori linee gialle tratteggiate
imageline($Immagine, 30, $y, 1240, $y, IMG_COLOR_STYLED); // linee gialle tratteggiate
$S-=100;
}


// scrittura di testi font, angolo rotazione, posizione x di partenza
$DimensioneFont = 10; $Font = "font/arial.ttf"; $Angolo = 0; $xStart = 40;


// scala x, separatori dei giorni del mese giorni del mese e numero giorno
for($x=1;$x<31;$x++)
{
imageline($Immagine, $x*40, 560, $x*40, 580, $Nero ); // separatore
// disegna numero giorni del mese
imagettftext($Immagine, $DimensioneFont, $Angolo, $x*40+15, 580, $Nero, $Font, $x);
}


// Scrive valore delle coordinate
imagestring($Immagine, 5, 600, 583, "G I O R N I" , $Rosso);// x in orizzontale
imagestringup($Immagine, 5, 2, 350, "V A L O R I" , $Rosso);// y in verticale dal basso verso l'alto


// inizio della scrittura della linea del grafico e dei valori
$xP = 0; $yP = 0; // conterrà valore del giorno Precedente
$xC = 0; $yC = 560;// conterrà valore del giorno Corrente


$DimensioneFont = 8;
for($gg=1;$gg<31;$gg++) // scorre l'array dei prezzi/giorno
{
$xP = $xC; $xC = $gg*40+15; 
$yP = $yC; $yC = 560 - $Prezzo[$gg];
imagesetpixel($Immagine,  $gg*40+15,$Prezzo[$gg], $Nero);  


imageline($Immagine, $xP,$yP,$xC,$yC, $Verde); // Linea del grafico


// prezzo giornaliero
imagettftext($Immagine, $DimensioneFont, $Angolo, $gg*40+18, 560-$Prezzo[$gg], $Rosso, $Font, $Prezzo[$gg]);
}


// imagepng($Immagine); // al browser
imagepng($Immagine, "es_97_grafico_andamento_azionario.png"); // salva
imagedestroy($Immagine);// libera memoria
?>


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> NomeFile </title>
</head>
<body>
<!-- legge il grafico appena creato e lo mette a video -->
<img src="NomeFile.png">
</body>
</html> Risultato: