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