C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -1C2110 Operační systém UNIX a základy programování Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno PS/2022 Prezenční forma výuky: Rev4 G02: Skriptování C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -2- Gnuplot PM3 http://www.gnuplot.info/ (dokumentace, tutoriály, zdrojové kódy) C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -3- Obsah ➢ Gnuplot • skriptování v jazyce gnuplot • terminály • příkaz plot, nastavení a popis os • transformace dat • příkaz splot C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -4Neinteraktivní spouštění 1) Nepřímé spouštění Spouštíme interpreter jazyka a jako argument uvádíme jméno skriptu. $ gnuplot muj_skript_v_gnuplotu Skripty nemusí mít nastaven příznak x (executable). 2) Přímé spouštění Spouštíme přímo skript (shell automaticky spustí interpreter). $ chmod u+x muj_skript_v_gnuplotu $./muj_skript_v_gnuplotu Skripty musí mít nastaven příznak x (executable) a interpreter (součást skriptu). #!/usr/bin/gnuplot plot sin(x) pause -1 C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -5Struktura skriptu #!/usr/bin/gnuplot set terminal pngcairo enhanced size 1024,768 set encoding iso_8859_1 set output "Figure01.png" set title "Main result" set xlabel "{/Symbol b} [{\260}]" set xrange[0.0:100.0] set xtics 20 set format x "%.0f" set ylabel "{/Symbol D}G_r [kcal/mol]" set yrange[0:10.0] set ytics 2.5 set format y "%.1f" set nokey plot "300.int" using ($1*180.0/3.14):2 w l nastavení terminálu nastavení x-ové osy nastavení y-ové osy vykreslení grafu C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -6- Terminály Terminál určuje kam bude graf vykreslen. > set term x11 # výstup je vykreslen do okna > set term qt # výstup je vykreslen do okna (lepší vlastnosti) > set term png size 800,600 # výstup je vykreslen jako obrázek ve formátu png > set output "output.png" # výstup bude uložen do souboru s názvem output.png, název musí být uveden v uvozovkách > test # vytiskne stránku demonstrující vlastnosti terminálu (ne všechny terminály mají stejné možnosti výstupu) C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -7Ukázky výstupu z různých terminálů wxt postscript/eps podporuje přerušované čáry C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -8Nastavení grafu > set title "popis" # záhlaví grafu > set xrange[min_value:max_value] # nastaví rozsah x-ové osy > set xlabel "popis" # nastaví popis x-ové osy > set yrange[min_value:max_value] # nastaví rozsah y-ové osy > set ylabel "popis" # nastaví popis y-ové osy > set nokey # nezobrazí legendu k datovým řadám C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -9Rozšířený textový režim Rozšířený textový režim (enhanced text mode) umožnuje vkládat text obsahující dolní a horní index, symboly, apod. Příklad: set encoding iso_8859_1 set xlabel "{/Symbol a}_1 [{\260}]" a1 [°] C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -10Transformace dat plot "data.log" using 2:3 Zobrazí závislost třetího sloupce na druhém ze souboru data.log plot "data.log" using ($2+1000):3 Zobrazí závislost třetího sloupce na druhém, k němuž je přičtena hodnota 1000 Základní použití klíčového slova using: Rozšířené možnosti: • aritmetický výraz uvedený v () • hodnoty v sloupcích souboru se získají pomocí operátoru $ (podobně jako v awk) plot "300.int" using ($1 * 180/3.14):2 Zobrazí závislost druhého sloupce na prvním. Hodnota z prvního sloupce je převedena z radiánů na stupně. C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -11Cvičení 1 1. Napište skript, který znázorní průběh funkce y=x2 v rozsahu 0-10 pro x-ovou hodnotu. Skript spusťte nepřímo pomocí interpretru gnuplot. K pozastavení běhu skriptu použijte příkaz: 2. Napište skript, který zobrazí průběh teploty v čase obsažený v souboru /home/kulhanek/Documents/C2110/04.GNUPLOT/temp.txt V grafu popište osy včetně určení jednotek. Čas je uveden v pikosekundách, teplota v kelvinech. 3. Napište skript, který zobrazí průběh volné energie na úhlu beta, který je zaznamenán v souboru: /home/kulhanek/Documents/C2110/04.GNUPLOT/300.int V grafu popište osy včetně určení jednotek. Volná energie je v kcal.mol-1 a úhel beta je v radiánech, v grafu jej však zobrazte ve stupních. pause -1 C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -12Cvičení 2 1. Jaké vlastnosti poskytují terminály x11 a qt. Pracujte v interaktivním režimu a použijte příkaz test. 2. Napište skript, který znázorní průběh funkce y=5x3 + 6x2 - 7 v rozsahu -10 až 5 pro xovou hodnotu. Skript spusťte přímo s uvedením interpretru v záhlaví skriptu. 3. Upravte předchozí skript tak, že se graf vykreslí do obrázku ve formátu png. Obrázek bude mít rozměry 640x480. Obrázek zobrazte pomocí příkazu display. 4. Zobrazte výsledek příkazu test pro terminál png a postscript. 5. Jaké terminály podporuje gnuplot (set terminal bez argumentu)? C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -13- Samostudium C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -14Příkaz - splot > splot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ...] Zobrazí XYZ graf funkce nebo datové řady obsažené v souboru. K zobrazování funkcí dvou proměnných lze použít příkaz splot. Směr pohledu se nastavuje příkazem set view a,b, kde a a b jsou směrové úhly. Pohled shora lze nastavit pomocí set view map Pro zvýraznění plochy pomocí funkční hodnoty lze použít pm3d zobrazení, např. > splot x*x+y*y with pm3d Při zobrazování funkcí lze hustotu vzorkování pro x-ový a y-ový směr zadat příkazem set isosamples a,b, kde a a b udává počet vzorků v daném směru. C2110 Operační systém UNIX a základy programování G02: Skriptování v Gnuplotu -15Cvičení 3 1. Zobrazte funkci x2+y2 2. Nastavte pohled shora (set view) 3. Zrušte pohled shora (unset view) 4. Zvyšte hustotu bodů pro zobrazeni funkce (set isosamples). Použijte hodnoty 10,20 ; 20,10 a 20,20 5. Použijte zobrazení pm3d 6. Nastavte pohled shora (set view) Úlohy řešte v interaktivním režimu.