Newsgroup: it.comp.www.php
Titolo: [OT] Grafici

Vorrei sapere, se esistono, i nomi di alcuni programmi per fare grafici tipo
quelli che si usano nei siti di borsa:
http://intraday.soldionline.it/dettaglio.asp?ticker=1644&p=25&m=22
grazie

 wrote in message
9nscfg$1qp2$1...@stargate1.inet.it...



http://intraday.soldionline.it/dettaglio.asp?ticker=1644&p=25&m=22
libgd, disponibile con PHP.
Questo script qui fa un grafico di quel tipo. Disegna un paio di seni, in
modo da farlo indicizzare dai motori tipo SexZilla <grin>.
<?
	// Dimensioni del grafico
        $LINES=180;
        $PIX = floor(720/$LINES);
        $HEI = 60;
        $WID = 180*$PIX;
	$LOGFILE = "/tanto/non/serve.log";
	$PNGFILE = "seni.png";
	$HTTPDIR = "/httpd/htdocs";
/*
          if (filemtime($LOGFILE) - filemtime("$HTTPDIR/$PNGFILE") < 180 )
          {
                  $WID += 5;
                  $HEI += 12;
                  print "<IMG SRC=\"$PNGFILE\" WIDTH=$WID HEIGHT=$HEI
ALT=\"irradiazione passiva, camera 4\">";
                  return;
          }
//        $fp = popen("tail -n $LINES $LOGFILE | tr -s \", \" \"\\t\"
// | cut -f3,4 | tr -cd \"[0-9] \\t\\n\"","r");
//        // Ogni riga sono 2 minuti (120 secondi).
//        // 180 righe = 6 ore.
        $stime = time() - 120*$LINES;
        $row1 = "";
        $row2 = "";
        $gd = imageCreate($WID+5, $HEI+12);
        $white = ImageColorAllocate($gd, 255,255,255);
        $red = ImageColorAllocate($gd, 255, 0, 0);
        $green = ImageColorAllocate($gd, 0, 255, 0);
	$blue = ImageColorAllocate($gd, 0, 0, 255);
        $yellow = ImageColorAllocate($gd, 255, 255, 0);
        $black = ImageColorAllocate($gd, 0, 0, 0);
        $gray = ImageColorAllocate($gd, 192, 192, 192 );
        ImageColorTransparent($gd, $white);
        ImageFilledRectangle($gd,1,$HEI, $WID,$HEI+12,$white);
	//// SFONDO FUME' 8-D
        $vector = array();
        $colors = array();
        // Il vettore è diviso in 3 sezioni.
        $third = floor($HEI/3);
        for ($i=0; $i < $third; $i++)
        {
                $vector[$i]             = floor(768*$i/$HEI);
                $vector[$third+$i]      = 255;
                $vector[2*$third+$i]    = 255;
        }
        for ($i=1; $i < $HEI; $i++)
	{
                $colors[$i] = ImageColorAllocate($gd,
$vector[$i],$vector[$HEI-$i],0);
                ImageLine($gd, 1, $HEI-$i, $WID, $HEI-$i, $colors[$i]);
        }
	/// FINE SFONDO FUME'
	// Linee per di vi'
        for ($y=0; $y < 10; $y++)
        {
                ImageLine($gd, 1, $HEI*$y/10, $WID, $HEI*$y/10, $gray);
        }
	// Linee per di va'
        $stime = time() - 120*$LINES;
        // 1 ora sono 30 linee. 1 schermo sono $LINES / 30 ore.
        // 1800 secondi sono 1800/3600 di ora, ossia 1800/3600 * 30/$LINES
        // di schermo, ossia (1800/120) / $LINES di schermo. Per cui:
        $offset= ($stime % 3600) * $WID / ($LINES*120);
        $start = $stime - ($stime % 3600);
        for ($x=0;$x < ($LINES/15)+2; $x++)
        {
                $tx = date("Hi", $start + 120*$LINES*$x/($LINES/15));
                $px = $WID*$x/($LINES/15) - $offset;
                ImageString($gd, 0, $px - 10, $HEI+3, $tx, $black);
                ImageLine($gd, $px, $HEI, $px, $HEI+3, $black);
        }
        ImageLine($gd, 0, $HEI, $WID, $HEI, $green);
        $prev15 = 5; $prev5 = 33; $pix5 = 0; $pix15 = 0;
        $xx = 0;
        for ($i = 1; $i <= $LINES; $i++)
        {
//                // puppa un dato dal radmeter
//                $data = fgets($fp, 30);
//                $y5 = strtok($data,"\t \n");
//                $y15= strtok("\t \n");
// Beh? Due seni avevo detto, e due seni sono.
$y5 = 50+40*sin($i/10);
$y15= 50+40*sin(-1.57+$i/10);
                if ($y5 > 99)
		{
			// kiss your sorry ass goodbye
			$y5 = 99;
		}
                if ($y15 > 99)  $y15 = 99;
                $y5 = $HEI*$y5/100;
                $y15 = $HEI*$y15/100;
                $L1 = 0.50;
                $L2 = 0.24;
                for ($x=0; $x<$PIX; $x++)
                {
                        $y = $prev15 + $x * ($y15 - $prev15)/$PIX;
                        if ($y > $HEI) $y = $HEI;
                        imageLine($gd, $xx-1, $pix15, $xx, $HEI-$y,
$black);
                        $pix15 = $HEI - $y;
	                $y = $prev5 + $x * ($y5 - $prev5)/$PIX;
                        if ($y > $HEI) $y = $HEI;
                        imageLine($gd, $xx-1, $pix5, $xx, $HEI-$y, $blue);
                        $pix5 = $HEI - $y;
                        $xx++;
                }
                $prev5 = $y5;
                $prev15= $y15;
        }
        ImageRectangle($gd, 0,0,$WID+1, $HEI+1, $black);
//        @fclose($fp);
        ImagePNG($gd, "$HTTPDIR/$PNGFILE");
        $WID += 5;
        $HEI += 12;
        print "<IMG SRC=\"/$PNGFILE\" WIDTH=$WID HEIGHT=$HEI ALT=\"Immagine
di due seni\">";
?>
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.