#!/usr/bin/env python # coding: utf-8 # Ještě než začnene ujistěte se že víte, jak to funguje s # [importem knihoven](http://hroch.spseol.cz/~nozka/python/matplotlib/#knihovnyazvislosti). # # Matplotlib -- základní myšlenky a postupy # ========================================== # # První zásadou, kterou si musíme osvojit je, že se vždy pracuje se seznamem (řadou) čísel. # Pracuje se s datovým typem `numpy.array`. # In[3]: a = array([5,8,12,13,100,18,74]) print a print "max:", a.max() print "min: ", a.min() print u"součet:", a.sum() print u'dékla:', a.size # linspace # ----------- # vytvoří řadu čísel tak, aby jich byl **požadovaný počet**: # In[2]: linspace(2,5,9) # In[3]: linspace(0,5,4) # In[4]: linspace(0,1,20) # arange # -------- # vytvoří řadu čísel, tak aby byl mezi nimi **požadovaný rozestup**. # Zároveň se číslo, které je uvedeno jako horní mez v seznamu neoběví. # In[5]: arange(5) # In[6]: arange(3,10) # In[7]: arange(10,20,0.2) # zeros, ones # ----- # vytvoří řadu nul nebo jedniček. Nezdá se to ale může to být někdy velice užitečné. # In[8]: zeros(5) # In[9]: ones(20) # Nejen výřezy # -------------- # # S datovým typpem `numpy.array` lze pracovat jako # s [klasickým python senzamem](http://geon.wz.cz/docs/node5.html#SECTION005140000000000000000), # ale je možné provádět i mnohem # [pokročilejší operace](http://wiki.scipy.org/Tentative_NumPy_Tutorial). # In[10]: t=linspace(0,10,11) print t # In[11]: print t[1:5] # In[12]: print t[-1] print t[-2] print t[-3] # In[13]: print t[5:-3] # Ve výřezech lze prvky i přeskakovat: # In[14]: t=arange(0,100,1) print t # In[15]: print t[0:20:3] # In[16]: print t[::9] # Výřez je možné použít i k přiřazení: # In[17]: t[::3]=0 print t # In[18]: t[20:]=7 print t # Pokud vás to zajímá víc, podívejte se na knihovnu [numexpr](http://code.google.com/p/numexpr/). # # Matematické funkce # --------------------- # # To co bychom v čistém Pythonu museli zdlouhavě řešit podmíkami a vnořenými cykly je pro `numpy.array` hračka: # Pokud provedeme nějakou matematickou operaci, provádí se vždy s dvěma prvky, které jsou v seznamech na stejné pozici. # Například u sčítání se sečte první prvek s první, druhý s druhým, třetí s třetím atd. # In[19]: a=array([1.,2.,3.,4.]) b=array([9.,8.,7.,6.]) print a print b print a+b # In[20]: print a*b print a/b # In[21]: print a print a+10 # In[22]: print b print b*3 # In[23]: print a print a**2 print a**3 # Fungují samozřejmě běžné matematické funkce: # # * `sin` # * `cos` # * `tan` # * `log` -- přirozený logaritmus # * `log10` -- dekadický logaritmus # * `exp` -- exponencíální funkce # # Kreslení # ------------- # # Pokud mám řadu hodnot na ose x a řadu hodnot na ose y, můžu je vinést do souřadnicového systému. # K tomuto účelu slouží funkce `plot()`. # In[17]: x=linspace(0.1,4,20) y=exp(x)/6. z=log(x) s=5*sin(x) plot(x,y, 'x-',x,z, 'x-', x,s,'x-') grid() # In[ ]: