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 20505×

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ů

13.9.2017 8:00 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

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

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

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