Gnuplot snadno a rychle
Toto je velmi stručný tutoriálek pro použití gnuplotu, který sepsal Petr Mikulík.
Program gnuplot je interaktivním programem pro kreslení vědeckých 2D a 3D grafů
z datových souborů i grafů funkcí. Jeho domovská stránka je
www.gnuplot.info.
Najdete zde
dokumentaci,
FAQ i
help, který obsahuje i odkazy na
tutoriály v češtině.
Doporučuji též shlédnout část
Demos, kde ke
každému obrázku je uvedena i posloupnost příkazů, které ho vykreslí.
Spustit, opustit, ...
Gnuplot spustíme příkazem gnuplot
z příkazové řádky, resp.
wgnuplot
na MSW, nebo myšoidně z ikony.
Příkaz gnuplot soubor.gp
vykoná příkazy z daného souboru a skončí,
příkaz gnuplot soubor.gp -
také příkazy vykoná, ale neskončí.
q, quit, exit | ukončit gnuplot
|
help | vypiš nápovědu
|
pwd | cesta k aktuálnímu adresáři
|
!ls | vypiš obsah aktuálního adresáře
|
save 'bla.gp' | ulož parametry grafu do textového souboru (skriptu)
|
load 'bla.gp' | načti parametry grafu z textového souboru (skriptu)
|
help, help plot, help expressions | help is your friend
|
show xxx; show all | zobraz nastavení parametru xxx, nebo vše
|
Gnuplot jako kalkulačka
print "Hello world! ", 'vyjde to ', 1+2*3+4.0**5 | Ahoj světe! a jednoduchý výraz
|
print 1/2, 1.0/2, 1/2.0, 1.0/2.0 | dělení v oboru celých a reálných čísel
|
print 1+2.5*sin(pi), 3*cos(45.0*pi/180), atan(1.0)*180/pi | goniometrické funkce
|
print exp(1), log(1e7), log10(1e7) | různé výrazy
|
Kreslíme grafy funkcí a datové soubory
plot sin(x), 0.5*cos(2*x) | nakresli grafy funkcí
|
plot 'a.dat', x, cos(x/180*pi) | nakresli data ze souboru a dvě funkce
|
plot x with line, x*x w points, 2*x w linespoints | grafy čarový, bodový, míchaný
|
p x w l, x*x w p, 2*x w lp | jako výše, ale (z lenosti...) zkracujeme dlouhé příkazy
|
plot (x<0 ? 0 : 1) with line linewidth 8 | Heavisideova skoková funkce a ternární operátor
|
set samples 1000; set yrange [-50:50]; plot tan(x) | vzorkování a divergující funkce
|
plot 'a.dat' using 1:3, 'a.dat' u (2*$1):($2+sin($3)) | přepočítáváme sloupce datového souboru
|
replot | opakuj předchozí graf
|
replot 'c.dat', 1.0/x | opakuj předchozí graf, přikresli další křivky
|
s=system('ls -1 *.dat');
plot for [k=1:words(s)] word(s,k) title word(s,k)
| vykresli všechny datové soubory v aktuálním adresáři
|
Vlastnosti grafu
set log y | logaritmická osa y
|
unset log | bez logaritmických os
|
set grid; unset grid | mřížka anebo bez mřížky
|
set key center below; unset key | zobraz kde anebo nezobraz legendu grafu
|
set title 'graf funkce sinus' | popisek grafu
|
set xlabel 'x (m)'; set ylabel 'y (V)' | popisky os
|
set autoscale, set autoscale fix | automatické škálování osy, totéž bez zaokrouhlení
|
set xrange [-1:1]; set yrange [*:100] | nastav rozsah os
|
3D grafy
splot x*y | 3D graf (povrch)
|
splot x*x-y*y with pm3d nebo set pm3d; splot x*x-y*y | s barevným povrchem
|
set pm3d map; splot 'a3.dat' | barevná mapa
|
set palette gray; replot | šedá mapa
|
set view ...; show view | nastavení směru pohledu (pohodlněji ale otáčením myší)
|
Horké klávesy v okně grafu
h | pomoc k horkým klávesám
|
a | autoscale
|
e | replot
|
r | pravítko (ruler) k měření vzdáleností
|
5 | měření vzdáleností v polárních souřadnicích (úhel nebo tangenta)
|
l | ve 2D (un)set log y, ve 3D log z nebo barvy
|
g | (un)set grid (mřížka)
|
2x MB1 | poloha kurzoru do schránky (MBn = mouse button číslo n)
|
MB2 | dočasná anotace grafu
|
MB3 | výběr rozsahu oblasti (zoom)
|
u, p, n | unzoom a předchozí nebo následující položka v historii zoomu
|
|
|
Různé další příkazy
test | testovací obrázek
|
set term wxt 3; test; set term wxt 4; plot x*x | více oken s grafy současně
|
set time; unset time | zobraz/nezobraz aktuální čas v grafu
|
set angles degrees; print sin(30); plot atan(x) | přepnutí mezi radiány a stupni
|
plot sin(x) with filledcurves title 'ahoj' | výplň
|
help style | vypiš seznam všech stylů pro "with"
|
set label "hello" at 3,4 | popis grafu
|
set label 1 "salut" ...; unset label | pojmenovaný popisek; zapomeň popisky
|
set arrow from 0,0 to -3,-3 heads | šipka
|
set arrow 5 from ...; unset arrow | pojmenovaná šipka; zapomeň šipky
|
history | historie příkazů
|
set term wxt; set encoding utf8 | na moderních systémech umožní popisky v libovolném jazyce (kódování)
|
set encoding iso_8859_2 | akceptuj české znaky na starších unixech
|
set encoding cp1250 | akceptuj české znaky na (pouze) českých MSW
|
load "all.dem" | prohlédneme si všechny demo soubory z distribuce gnuplotu
|
Fitování (experimentálních) dat
Potřebujeme proložit nějakou funkci naměřenými daty, např. bilineární funkci
závisející na 3 parametrech a,b,c. Experimentální data uložíme do souboru exp.dat,
např. takto (oddělovač sloupců je tabulátor nebo mezery):
0.0 0.0
1.0 2.0
1.99 5.1
3.05 9.8
Použijeme následující skript:
# Kvadraticka modelova funkce y=f(x) k fitovani
f(x) = a*x*x + b*x + c
# Parametry funkce a jejich pocatecni odhady
a = 12
b = 34
c = 56
# Nafitujme namerena data ulozena v souboru exp.dat: 1. sloupec x, 2. sloupec y
fit f(x) 'exp.dat' via a,b,c
# Precteme si vysledek, tj. odhady parametru a,b,c a jejich chyby
pause -1 "Podivej se na vysledek, pak zmackni Enter."
# Vykreslime experimentalni a nafitovanou krivku
set title "Prvni fit"
plot 'exp.dat' with lp, f(x) with line
Bližší informace o nelineárním fitování viz
help fit a help statistical_overview.
Statistické funkce
V gnuplotu od verze 4.6 můžete využít příkaz stat 'a.dat' pro
zobrazeních základních statistických údajů z dat ve sloupcích daného souboru
(průměr, suma, medián, proložení přímkou).
Tisk
Chcete si obrázek uložit do souboru nebo vytisknout? Zkuste například
set terminal postscript color enhanced lw 2 "Helvetica" 14
set out 'a.ps'
replot; set out; set term pop
nebo
set terminal png size 800,700; set out 'a.png'
replot; set out; set term pop
nebo
set terminal pdf; set out 'a.pdf'
replot; set out; set term pop
Příkaz set terminal xxx
změní typ výstupního souboru, např. pro
tisk do souboru daného formátu místo kreslení na obrazovku. Graf si pak můžete
vytisknout z prohlížeče daného typu souboru.
Seznam možných terminálů získáme příkazem set terminal
.
Podporovaných terminálů je spousta, nejen pro "prehistorické" tiskárny a
grafické terminály, ale i pro výstup do LaTeXu či kombinovaného LaTeXu a
postscriptu, do animovaného gifu nebo do čistě textového terminálu dumb.
Autor: Petr Mikulík, Masarykova univerzita, Brno.
Verze dokumentu: 22. 9. 2014.
Poznámka: Tento dokument je určen k volnému šíření bez omezení.
Závěrečná poznámka: Enjoy gnuplot!