jednoduchy skript na kresleni grafu na WWW

Petr Bravenec pbravenec na solartec.cz
Pátek Listopad 7 15:24:21 CET 2003


Soubor graf.php3 v přílože - samotné volání gnuplot.

Gnuplot ve RedHat 8 nemá podporu gif souborů. Chce to buď
překompilovat nebo použít starší verzi (RH 6.2 - stačí přeinstalovat
gnuplot a myslím doinstalovat knihovnu gd z RH 6.2. Chodí i v
novějších verzích RH).

Já tahám všechna data z databáze, vypadat to může třeba takto.
Upozorňuju, že jsem tenhle konkrétní příklad nezkoušel, kód jsem
vypreparoval z jiného, mnohem složitějšího programu:
########################
# Příprava datového souboru
$ri = pg_exec ($DB, "select x, y from tabulka;");
$F1 = tempnam ("/tmp", "graf");
$fd = fopen ($F1, "w");
for ($i=0; $i<pg_numrows($ri); $i++) {
    $data = pg_fetch_object ($ri, $i);
    fwrite ($fd, "$data->x $data->y\n");
    }
fclose ($fd);
# Výsledkem je textový soubor v adresáři /tmp, na každém řádku hodnota x a y

########################
# Příprava souboru s příkazy
$F2 = tempnam("/tmp", "graf");
$fd = fopen ($F2, "w");
fwrite ($fd, "
set terminal gif $transparent size 480, 360 xffffff x000000 x808080 
x000000 xaa9
set output;
set grid;
plot \"$F1\" using 1:2 title \"Křivka\";
");
fclose ($fd);
# Výsledkem je textový soubor s příkazy pro gnuplot

########################
# A nakonec vložení obrázku do html dokumentu
print "<img 
src=\"graf.php3?TEXT=.URLencode($F2)."&DATA=".URLencode($F1)."\">\n";


Petr Skoda napsal(a):

>On Fri, 7 Nov 2003, Petr Bravenec wrote:
>
>  
>
>>tuším vyhovět může. Případné ukázkové PHP skripty mohu poskytnout.
>>    
>>
>budu za ne velmi vdecny
>
>  
>
>>>Spektra se mají kreslit jak? V klasickém astronomickém provedení, jak
>>>      
>>>
>>to leze ze spektrografu - rozmázlá čára s občasnou emisní či
>>absorpční čarou,
>>    
>>
>
>ne ne, to je jen pro ilustrace laikum, profik potrebuje zavislaost
>(relativni) intenzity na vlnove delce.
>
>nebo spíše maxwelova křivka
>
>No ona je to Planckova ;-)
>
Teď už si ty pány plést nebudu :-)



-- 

email: pbravenec na solartec.cz
telefon: 777 566 384
icq: 227051816



------------- další část ---------------
<?
Header("Content-type: image/gif");
Header("Pragma: no-cache");
Header("Cache-Control: no-cache");
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
PassThru("gnuplot $TEXT");
#unlink($TEXT); // nemazat kvůli MS internet exploderu
#unlink($DATA);
?>


Další informace o konferenci Linux