creare un grafico

Ciao,

visto che con php si possono manipolare molti dati, c'è la possibilità di creare dei grafici (a barre, torte)?

oppure con che altro linguaggio dovrebbe interagire? tanto per farmi un'idea..

grazie! :bye:

inviato 10 anni fa
mauro1980
X 0 X

Ciao,

visto che con php si possono manipolare molti dati, c'è la possibilità di creare dei grafici (a barre, torte)?

oppure con che altro linguaggio dovrebbe interagire? tanto per farmi un'idea..

grazie! :bye:

Puoi farlo anche con php, guarda questo link:

http://www.aditus.nu/jpgraph/

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

una volta ho fatto un istogramma con php... ti allego il codice...

funziona con le lib gd

<?php
$size_x = 640;
$size_y = 480;
$titolo = 'Il turismo sciistico invernale';
$titolo2 = 'Valori in migliaia';

$valori = array(1999 => 5300, 2000 => 5700, 2001 => 6400, 2002 => 6700, 2003 => 6600, 2004 => 7100, 2005 => 8000, 2006 => 29);
$max=8000;
$unita=500;

$img=imagecreatetruecolor($size_x, $size_y);
imageantialias($img, true);
imagealphablending($img, true);

$bg_image= './immagine.png';
$bg = imagecreatefrompng($bg_image);
$sizes = getimagesize($bg_image);

imagecopyresampled($img, $bg, 0, 0, 0, 0, $size_x, $size_y, $sizes[0], $sizes[1]);

/*Area del grafico*/
$sfondo = imagecolorallocatealpha($img, 127, 127, 192, 32);
imagefilledrectangle($img, 20, 20, $size_x - 20, $size_y - 80, $sfondo);
imagefilledrectangle($img, 20, $size_y - 60, $size_x - 20, $size_y - 20, $sfondo);

/* valori */
$barcolor = imagecolorallocatealpha($img, 0, 0, 128, 80);
$spacing = ($size_x - 140) / count($valori);
$start_x = 120;

foreach ($valori as $key => $value) {
   $x1 = $start_x + 0.2 * $spacing;
   $x2 = $start_x + 0.8 * $spacing;
   
   $y1 = $size_y - 120;
   $y2 = $y1 - (($value/$max) * ($size_y - 160));
   
   imagefilledrectangle($img, $x1, $y1, $x2, $y2, $barcolor);
   $start_x += $spacing;   
}

/* Griglia */
$nero = imagecolorallocate($img, 0, 0, 0);
$grigio = imagecolorallocate($img, 128, 128, 192);

for ($i=$unita; $i <= $max; $i += $unita){
   $x1=110;
   $y1= $size_y - 120 - (($i/$max) * ($size_y - 160));
   $x2 = $size_x - 20;
   $y2= $y1;
   
   imageline($img, $x1, $y1, $x2, $y2, ($i % (2* $unita)) == 0 ? $nero : $grigio);
   
}

/* Assi */
imageline($img, 120, $size_y - 120, 120, 40, $nero);
imageline($img, 120, $size_y - 120, $size_x - 20, $size_y - 120, $nero);

/* titolo */
$c_x = $size_x / 2;
$c_y = $size_y - 40;

$box = imagettfbbox(20, 0, 'arial.ttf', $titolo);
$sx = $box[4] - $box[0];
$sy = $box[5] + $box[1];

imagettftext($img, 20, 0, $c_x - $sx / 2, $c_y - ($sy / 2), $nero, 'arial.ttf', $titolo);

$c_x = 50;
$c_y = ($size_y - 60) / 2;

$box = imagettfbbox(14, 90, 'arial.ttf', $titolo2);
$sx = $box[4] - $box[0];
$sy = $box[5] + $box[1];
imagettftext($img, 14, 90, $c_x - ($sx /2), $c_y - ($sy / 2), $nero, 'arial.ttf', $titolo2);

/* Etichette */
$c_y=$size_y - 100;
$start_x = 120;

foreach ($valori as $label => $dummy){
   $box=imageftbbox(12, 0, 'arial.ttf', $label);
   $sx = $box[4] - $box[0];
   $sy = $box[5] - $box[1];
   $c_x = $start_x + (0.5 * $spacing);
   imagefttext($img, 12, 0, $c_x - ($sx / 2), $c_y - ($sy / 2), $nero, 'arial.ttf', $label);
   
   $start_x += $spacing;
}

$r_x = 100;

for ($i = 0; $i <= $max; $i += ($unita * 2)){
   $c_y = $size_y - 120 - (($i / $max) * ($size_y - 160));
   $box = imageftbbox(12, 0, 'arial.ttf', $i / 100);
   $sx = $box[4] - $box[0];
   $sy = $box[5] - $box[1];
   imagettftext($img, 12, 0, $r_x - $sx, $c_y - ($sy / 2), $nero, 'arial.ttf', $i / 100);
}

/* Finalmente visualizza!!! */
header('Content-type: image/png');
imagepng($img);
?>

nell'array $valori ci sono i dati del grafico (assex => essey). titolo sono i titolo dei grafici... $bg_image è l'immagine di sfondo del grafico..

risposto 10 anni fa
ttan
ttan
1
modificato 10 anni fa
X 0 X

Ciao ttan,

volevo provare la tua pagina..

ho attivato la libreria, riavviato apache(ed anche il pc) ma mi da errore

"Fatal error: Call to undefined function imagecreatetruecolor() "

cosa devo fare?

risposto 10 anni fa
mauro1980
X 0 X

che gd hai installato? forse necessita gd2...

risposto 10 anni fa
ttan
ttan
1
X 0 X

non le ho installate...

ho letto dei post precedenti dove gianni diceva solo di togliere il ; davanti alla dll relativa....

risposto 10 anni fa
mauro1980
X 0 X

esegui un phpinfo() e controlla che siano state caricate le GD. Riporta inoltre la versione.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

gianni mi ha battuto sul tempo.. ;) :bye:

risposto 10 anni fa
ttan
ttan
1
X 0 X

non trovo niente riguardante le gd..  :'(

risposto 10 anni fa
mauro1980
X 0 X

Che versione di PHP stai usando? Sempre dal phpinfo(), qual'è il percorso che ti viene segnalato per il php.ini? Lo trovi all'nizio della pagina. Coincide con il percorso corretto?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

la versione php è: PHP Version 5.1.2

il percorso del php.ini è: C:\php\php.ini  e coincide..

risposto 10 anni fa
mauro1980
X 0 X

Se hai tolto il ; dalla direttiva del php.ini per caricare le GD dovrebbe funzionare tutto  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

TI POSTO IL PEZZETTO DEL PHP. INI:

;extension=php_mbstring.dll

;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_dba.dll

;extension=php_dbase.dll

;extension=php_exif.dll

;extension=php_fdf.dll

;extension=php_filepro.dll

extension=php_gd2.dll                           <---------------

;extension=php_gettext.dll

;extension=php_ifx.dll

;extension=php_imap.dll

;extension=php_interbase.dll

;extension=php_ldap.dll

;extension=php_mcrypt.dll

;extension=php_mhash.dll

;extension=php_mime_magic.dll

;extension=php_ming.dll

;extension=php_mssql.dll

;extension=php_msql.dll

;extension=php_mysql.dll

;extension=php_oci8.dll

;extension=php_openssl.dll

;extension=php_oracle.dll

;extension=php_pgsql.dll

;extension=php_shmop.dll

;extension=php_snmp.dll

;extension=php_sockets.dll

;extension=php_sqlite.dll

;extension=php_sybase_ct.dll

;extension=php_tidy.dll

;extension=php_xmlrpc.dll

;extension=php_xsl.dll

 :dunno:

risposto 10 anni fa
mauro1980
X 0 X

Ho il dubbio che il php.ini non venga letto all'avvio di apache. Per verificarlo prova ad inserire un errore, ad esempio inserisci la riga:

extension=non_esiste.dll

al riavvio di Apache, se il file viene letto dovresti ricevere un errore.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

mi sa proprio che è come dici tu.. non lo legge..

e adesso???

risposto 10 anni fa
mauro1980
X 0 X

Non è che stai modificado un file che non si chiama realmente php.ini ?!?!? Controlla bene l'estensione del file, magari windows ti sta nascondendo la vera estensione.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

no no, è proprio lui!! (ha l'iconcina con l'ingranaggio..)

ho fatto una ricerca su tutto il disco, c'è quello e php.ini-recommended..

risposto 10 anni fa
mauro1980
X 0 X

ma se il phpinfo() ti dice che è quello il file che cerca di caricare, allora perché non lo legge ?  :crazy:  :wallbash:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ma se apache non legge il php.ini, come fa a sapere cosa deve fare??

per esempio nel mio è configurato il server smtp che funziona!! mah!!

risposto 10 anni fa
mauro1980
X 0 X

ciao,

ho provato ad installare il tutto in un'altra macchina, ma il problema è lo stesso.. come posso fare per poter cominciare a creare grafici??

risposto 10 anni fa
mauro1980
X 0 X

Ma l'estensione mysql riesci a caricarla?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho trovato!!

non era settata "extension_dir"!!

ora mi da altri tipi di errori ma almeno nel phpinfo() ci sono le gd!!

ora comincio a studiarle! :bye:

risposto 10 anni fa
mauro1980
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda