C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -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/2020 Distanční forma výuky: Rev2 9. lekce / modul 1 C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -2- Gnuplot PM3 http://www.gnuplot.info/ (dokumentace, tutoriály, zdrojové kódy) C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -3- Obsah ➢ Prezentace vědeckých dat ➢ Gnuplot • přehled jazyka gnuplot • příkaz plot, nastavení a popis os • terminály • příkaz splot C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -4Prezentace vědeckotechnických dat Data prezentovaná pomocí grafu: ▪ graf nesmí být zahlcen daty ▪ prezentace dat musí být stručná a jednoznačná ▪ osy grafu musí být popsané včetně uvedení jednotek ▪ datové řady musí být rozlišeny buď barevně nebo pomoci stylu čáry (plná, přerušovaná, tečkovaná, apod.) a opatřeny legendou uvedenou v grafu nebo v jeho legendě C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -5- Ukázky Figure 1. Impact of total simulation time on the calculated free energy DA(DD). C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -6- Ukázky Figure 2. Impact of REWALD cut-off on the calculated free energy DA(DD). The inset shows the region with the largest deviations. C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -7Interaktivní spouštění Gnuplot slouží k vykreslování 2D a 3D grafů umožnující práci v interaktivním tak i skriptovacím režimu. [kulhanek@wolf ~]$ gnuplot G N U P L O T Version 4.4 patchlevel 3 last modified March 2011 System: Linux 3.2.0-31-generic Copyright (C) 1986-1993, 1998, 2004, 2007-2010 Thomas Williams, Colin Kelley and many others gnuplot home: http://www.gnuplot.info faq, bugs, etc: type "help seeking-assistance" immediate help: type "help" plot window: hit 'h' Terminal type set to 'wxt' gnuplot> Interaktvní mód příkazová řádka gnuplotu příkazová řádka shellu Bash C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -8Neinteraktivní 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í 9. lekce / modul 1 -9Příkaz - plot: funkce > plot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ...] Zobrazí XY graf funkce nebo datové řady obsažené v souboru. Příklady (funkce): > plot sin(x) > plot cos(5.7*x+3.4) > plot sin(x), cos(x) > f(x) = sin(x) > plot f(x) C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -10Příkaz - plot: datové řady > plot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ...] Zobrazí XY graf funkce nebo datové řady obsažené v souboru. Příklady (funkce): > plot "input.txt" > plot "input.txt", "teplota.log" > plot "input.txt" using 2:3 > plot "input.txt" using 1:($2+10.7) > plot "input.txt" using ($1/10):($2+$3) název souboru s daty (název musí být uveden v uvozovkách) druhý sloupec tvoří x-ové hodnoty třetí sloupec tvoří y-ové hodnoty (…) aritmetický výraz na libovolné pozici $N hodnota ve sloupci N C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -11> plot sin(x) > plot cos(x) title "cos" > plot f(x) with points linecolor rgb "red" linewidth 2 > plot "data.log" using 2:3 title "temperature" with lines \ linecolor rgb "red" linewidth 2 , \ "data.log" using 2:4 title "pressure" with lines \ linecolor rgb "blue" linewidth 2 Příkaz - plot, nastavení > plot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ...] Zobrazí XY graf funkce nebo datové řady obsažené v souboru. Příklady: lines, points, linespoints, dots, … barva čáry tloušťka čáry C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -12Cvičení I 1. Znázorněte průběh funkce y=x2 2. Průběh funkce z prvního cvičení zobrazte modrou barvou 3. Zobrazte průběh teploty v čase obsažený v souboru /home/kulhanek/Documents/C2110/Lesson09/temp.txt Čas je uveden v prvním sloupci, teplota je uvedena v druhém sloupci. 4. Zobrazte do jednoho grafu funkci sin(x) pomocí červené čáry a funkci cos(x) pomocí oranžové čáry a bodů. Úlohy řešte v interaktivním režimu. C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -13Další příkazy > 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 > pause -1 # čeká na zmáčknutí klávesy C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -14Cvičení II 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. 2. Napište skript, který zobrazí průběh teploty v čase obsažený v souboru /home/kulhanek/Documents/C2110/Lesson09/temp.txt V grafu popište osy včetně určení jednotek. Čas je uveden v pikosekundách, teplota v kelvinech. C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -15- 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í 9. lekce / modul 1 -16Uká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í 9. lekce / modul 1 -17Cvičení III 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í 9. lekce / modul 1 -18- Samostudium C2110 Operační systém UNIX a základy programování 9. lekce / modul 1 -19Pří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í 9. lekce / modul 1 -20Cvičení IV 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.