Verze dokumentu: 4. 10. 2016
Licence: Tento dokument je určen k volnému šíření bez omezení.

Obsah

Toto je velmi stručný tutoriálek pro použití gnuplotu.

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í.


1. Spustit, opustit, …

Gnuplot spustíme příkazem gnuplot z příkazové řádky, resp. wgnuplot (nebo wgnuplot_pipes) 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 - 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 ze textového souboru (skriptu)

help, help plot, help expressions  

help is your friend

show xxx; show all

zobraz nastavení parametru xxx, nebo všechna nastavení

2. 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

3. Kreslíme grafy funkcí a datové soubory

plot sin(x), 0.5*cos(2*x)

nakresli grafy funkcí (x je v radiánech)

plot 'a.dat', x, cos(x/180*pi)

nakresli data ze souboru a dvě funkce (goniometrická: x je ve stupních)

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

4. 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

5. 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ší)

6. 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)

dvakrát MB1  

poloha kurzoru do schránky (MBn = mouse button číslo n)

MB2

dočasná anotace grafu

MB3

výběr rozsahu oblasti (zvětšení, zoom)

u, p, n

unzoom a předchozí nebo následující položka v historii zoomu

7. 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

 

8. Fitování (experimentálních) dat

Potřebujeme proložit nějakou funkci naměřenými daty, např. kvadratickou funkci závisející na 3 parametrech a, b, c. Experimentální data uložíme do souboru exp.dat, např. takto (oddělovačem sloupců je tabulátor nebo mezery):

  0.0   0.0
  1.0   2.0
  1.99  5.1
  3.05  9.8

Pak 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 = 1.2
b = 0.5
c = 0.1

set title "Datovy soubor a rucni nastaveni parametru"
plot 'exp.dat' with lp, f(x) with line

pause -1 "Rucne nastavene hodnoty parametru modelove funkce. Podivej se na graf, pak zmackni Enter."

# Nafitujme namerena data ulozena v souboru exp.dat: 1. sloupec x, 2. sloupec y
fit f(x) 'exp.dat' via a,b,c

print "Precti si vysledek, tj. odhady parametru a,b,c a jejich chyby, pak se podivej na vysledny graf"

# Vykreslime experimentalni a nafitovanou krivku
set title "Prvni fit"
plot 'exp.dat' with lp, f(x) with line

Pro proložení přímky body v datovém souboru by pak nejkratší posloupnost příkazů byla tato:

# Nastaveni: Linearni modelova funkce y=f(x) k fitovani
f(x) = a*x + b
# Nastaveni: Parametry funkce a jejich pocatecni odhady
a = 2.6; b = 0.5
# Nastaveni: Nazev datoveho souboru
fajl = 'exp.dat'

# Nafituj data:
fit f(x) fajl via a,b
set title "Linearni fit"
plot fajl with lp, f(x) with line

Ještě snazší způsob, jak získat parametry proložené přímky, získáme příkazem stat 'exp.dat', viz následující kapitola, ovšem bez uvedení nejistot v určení koeficientů a, b.

Bližší informace o nelineárním fitování viz help fit a help statistical_overview

9. Statistické funkce

Pro zobrazeních základních statistických údajů z dat ve sloupcích zadaného souboru (průměr, suma, medián, proložení přímkou) můžete využít příkaz stat 'a.dat'.

#stat 'test.dat'
stat 'test.dat' using 1:3 # vybereme sloupce, ktere chceme analyzovat

show var
err_x = STATS_stddev_x / sqrt(STATS_records-1)
err_y = STATS_stddev_y / sqrt(STATS_records-1)
print "chyba aritmetickeho prumeru x: ", err_x
print "=> x = ", STATS_mean_x, " +- ", err_x
print "   y = ", STATS_mean_y, " +- ", err_y

10. Tisk

Chcete si obrázek uložit do souboru nebo vytisknout? Zkuste například

set terminal pdf; set out 'a.pdf'
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 postscript color enhanced lw 2 "Helvetica" 14
set out 'a.ps'
replot; set out; set term pop

nebo

set terminal postscript eps mono enhanced lw 4
set out 'a.eps'
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 (vyzkoušejte si např. set term dumb; test).

Poznámka: pokud vkládáte obrázky do nějakého dokumentu, bývá dobré se zbavit případných bílých okrajů. Při vytváření png obrázku přidejte parameter pro ořez set term png ... crop. Máte-li už uložený pdf obrázek do souboru, zavolejte pak příkaz pdfcrop obrazek.pdf (program pdfcrop je např. součástí distribucí TeXu), na postscriptový soubor zavolejte např. fixbb obrazek.eps.




Závěrečná poznámka: Enjoy gnuplot!