LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Gnuplot I - Funkce 1 proměnné

V úvodním článku bych Vás chtěl naučit vykreslovat grafy funkcí jedné proměnné.

1.9.2004 08:00 | Vladimír Jarý | Články autora | přečteno 21200×

Základy práce v Gnuplot

Gnuplot slouží ke kreslení grafů funkcí ve 2d a 3d a zpracování statistických dat. V dnešním článku Vás stručně seznámím s možnostmi kreslení dvourozměrných grafů. Gnuplot by měl být součástí většiny hlavních distribucí, pokud na té Vaší chybí, můžete si jej stáhnout z domácí stránky projektu. K dispozici jsou zdrojové kódy pro Unix/Linux, Os/2, pro 32-bitová Windows, Apple Macintosh a další méně významné platformy. Ačkoliv je rozhraní programu řádkové, pro výstup grafu budete potřebovat běžící X window server. Program se spouští z konzole příkazem gnuplot, pro ukončení stiskněte ctrl+d nebo zadejte příkaz exit. Pro vypsání základní nápovědy napište na prompt help.

Zadávání funkcí

Jako proměnná se používá standardně x, v případě třírozměrných grafů pak x a y, u parametrických grafů hraje roli parametru písmeno t. Součet se značí znakem +, rozdíl znakem -, pro součin * podíl / a pro mocninu **. Plus respektive mínus mají navíc i význam unárního operátoru (+5, -3). Ludolfovo číslo lze zadat konstantou pi (pi zde má hodnotu 3.14159265358979). Následuje tabulka některých základních funkcí:

  • absolutní hodnota: abs
  • znaménko: sgn
  • druhá odmocnina: sqrt
  • přirozený logaritmus (základ e): log
  • dekadický logaritmus (základ 10): log10
  • exponenciála: exp
  • trigonometrické funkce: sin, cos, tan
  • cyklometrické funkce: asin, acos, atan
  • hyperbolometrické funkce: sinh, cosh, tanh
  • inverzní hyperbometrické funkce: asinh, acosh, atanh

Kromě těchto základních funkcí známých ze středoškolské analýzy zvládá Gnuplot i Besselovy funkce, beta a gamma funkce. U řady funkcí jsou navíc podporovány i komplexní argumenty. Pozor, při zadávání funkcí a psaní příkazů závisí na velikosti písmen! K vyhodnocení aritmetického výrazu použijte příkaz print. V prostředí gnuplot je možné zavádět vlastní proměnné ve tvaru proměnná = hodnota

print sin(0) # vrátí 0
a = 5 # do proměnné a ulož hodnotu 5
print a**2+a+5 # vrátí 30

Vykreslování funkcí jedné proměnné

K nakreslení grafu 1 proměnné (x) slouží příkaz plot. Základním argumentem příkazu je požadovaná funkce, popřípadě více funkcí oddělených čárkou. Zkuste zadat plot sin(x). Pokud napíšete příkaz správně, mělo by se objevit X-ové okno s nakresleným grafem, v případě chyby použijte šipku nahoru (slouží pro pohyb v historii příkazů, obdobně jako v konzoli) a opravte zadání. Výsledný graf, jak je vidět na obrázku, nevypadá příliš pěkně, bylo by potřeba změnit měřítko os. Pokud chceme změnit osy pouze pro jeden konkrétní graf, stačí přímo za příkaz plot připsat požadované rozměry v tomto tvaru:

plot [x1:x2][y1:y2] f(x) 
 # obecná syntaxe, nastaví osu x na (x1, x2) a osu y na (y1, y2)
plot [0:2*pi][-1:1] sin(x) # nakreslí 1 periodu sinusoidy od 0 do 2 pi
plot [0:2*pi] cos(x) # změní pouze osu x
plot [][-1:1] # změní pouze osu y

Pro změnu os po celou dobu relace použijeme příkaz set, který slouží k nastavování mnoha různých aspektů programu. (Pro výpis všech parametrů tohoto příkazu stačí napsat samotné set):

set xrange [x1,x2] # nastaví globálně osu x set yrange [y1,y2] # nastaví globálně osu y

Pokud se chcete vrátit k výchozímu nastavení osy y, napište set autoscale y a osa y se bude opět automaticky dopočítávat. Pro aplikování změn měřítka (a nejenom měřítka) na již vykreslený graf slouží příkaz replot. A k měřítku ještě jednou, občas se hodí nastavit jednu osu v logaritmické stupnici. Opět použijeme příkazu set, tentokráte s parametrem logscale osa. Pro návrat na nelogaritmickou osu se použije příkaz unset s parametrem logscale. Pozor, příkaz unset sloužící jako protiklad příkazu set byl zaveden ve verzi (tuším) 4.0, ve starších verzích se pro zrušení konkrétního nastavení (třeba právě logaritmického měřítka) zavolal příkaz set s parametrem začínajícím prefixem no- (v tomto případě nologscale). Více snad vysvětlí ukázka:

plot log(x), exp(x) #vykresli vhodné funkce
          pro demonstraci logaritmického měřítka
set xrange [1,5]
set logscale x # osa x logaritmická
replot # překreslí graf s novým nastavením
set logscale y # osa y logaritmická
replot # překreslí graf s novým nastavením
# syntaxe platná pro verzi 4.0
unset logscale x
unset logscale y
# syntaxe platná ve starších verzích
set nologscale x
set nologscale y

Vykreslování os

Asi jste si všimli, že normálně je vypnuté zobrazování os x a y (tedy přímek o rovnicích x=0, y=0). K zobrazení těchto os nám pomůže již známý příkaz set:

plot x
set xzeroaxis # zobraz osu x
set yzeroaxis # zobraz osu y
set zeroaxis # zobraz osu x i osu y jediným příkazem :-)
replot # podívej se na výsledek

Pro opětovné skrytí os zavolejte příkaz unset:

unset xzeroaxis # vypne osu x
unset yzeroaxis # vypne osu y
unset zeroaxis # příkaz pro lenochy, vypne obě osy najednou
set nozeroaxis # pouze pokud máte starší verzi

Následuje stručně řada dalších příkazů pro úpravu vzhledu grafu:

set title "Návštěvnost Linuxsoftu :-)'" # Nastav popisek grafu
set xlabel "Čas" # nastav popisek osy x
set ylabel "Hodnota" # nastav popisek osy y
set nokey # skryj legendu 
set noborder #skryj rámeček
set grid # zobraz mřížku
set xrange[0:4]
plot exp(x)

Definování vlastních funkcí:

Ačkoliv gnuplot podporuje celkem slušnou řádku základních funkcí, není na škodu umět nadefinovat si funkci vlastní. Seznam vlastních funkcí zobrazíte příkazem show functions. Následuje syntaxe a několik příkladů:

Syntaxe: jméno_funkce(proměnné) = výraz
parabola(x) = x**2 # definujeme si funkci y=x^2
plot parabola(x) # a vykreslíme ji
pythagoras(x,y) = sqrt(x**2+y**2) # Pythagorova věta
print pythagoras(3,4) # vrátí 5
test(x) = x>0 ? sin(x) : cos(x)

V poslední ukázce je použit podmíněný výraz známý z jazyka C:

podminka ? výraz1 : výraz2

a znamená, že se vyhodnotí pravdivost výroku v podmínce, pokud jesplněna, vykoná se výraz1, jinak výraz2. Také logické operátory jsou převzaté z Céčka:

  • Je rovno: ==
  • Není rovno: !=
  • Je větší: <
  • Je menší: >
  • Je větší nebo rovno <=
  • Je menší nebo rovno >=
  • Konjunkce: &&
  • Disjunkce: ||

Za výraz1 nebo výraz2 je možné vložit i další větvení a nadefinovat například funkci signum (funkce signum vrací záporným argumentům hodnotu -1, v nule nabývá hodnotu 0 a konečně kladným argumentům vrací 1).

  znamenko(x) = x>0 ? 1 : (x==0 ? 0 : -1)
  print znamenko(-10)
  print znamenko(0)
  print znamenko(10)

To je pro dnešek vše, doufám, že jsem Vás příliš neznechutil matematikou. V příštím pokračování se naučíme vykreslovat grafy funkcí 2 proměnných.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze