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!