199/626

Několik poznámek k NumPy, SciPy a Matplotlib

Na této stránce najdete návody a poznámky k velice zajímavým knihovnám Matplotlib Numpy a Scipy. Pro návody je použit IPython, IPython notebook a IPython notebook viewer. Návody jsou vlastní i převzaté. Pro váš přehled doporučuji nejprve projít následující odkazy na dokumentaci:

Obsah:

  1. Dokumentace
  2. Knihovny a závislosti
  3. Základy
  4. Několik příkladů
  5. Pokročilejší práce
  6. Sympy
  7. Tipy a triky

Dokumentace

Knihovny a závislosti

Pro tvorbu zdejších příkladů jsem použil IPython, který mi automaticky (pomocí příkazu %pylab) importuje všechny potřebné knihovny. Pokud chcete zde uvedené příklady použít mimo tento interpret budete muset provést import knihoven. Já to ve svých skriptech dělám následujícím způsobem:

import numpy as num
import scipy as sci
import pylab as lab

from pylab import pi, e 

`--> stáhnout

Potom můžu ve svých programech dělat něco jako:

print pi
v = e**3

`--> stáhnout

nebo

t=num.linspace(0,10,50)
u=num.sin(2*pi*0.5*t+pi/6.)
lab.plot(t,u)
lab.show()

`--> stáhnout

show()

Také je myslím velice důležité říct, že IPython je při tvorbě příkladů nastaven pro interaktivní práci a grafy se zobrazují interaktivně -- tedy automaticky.

Pokud se rozhodnete zapsat příkazy do skriptu je třeba zavolat pro zobrazení grafu nebo grafů metodu show()

lab.show()

`--> stáhnout

(La)TeX

Pro sazbu řeckých písmen a vzorců je používán systém TeX (LaTeX). Aby bylo možné sázet vzorce a řecká písmena je nutné mít ho nainstalovaný. Pokud ho nainstalovaný nemáte (to se týká hlavně uživatelů OS rodiny Windows) nepoužívejte konstrukce, které v příkladech vidíte uzavřené mezi znaky $. Například:

title(r'$u_1=\sin(2\pi ft)$')

`--> stáhnout

$u_1=\sin(2\pi ft)$

| navigace |

Základy

| navigace |

Několik příkladů

| navigace |

Pokročilejší práce

Interpolace hladkou křivkou

   1 #!/usr/bin/env python
   2 # -*- coding: utf8 -*-
   3 # Soubor:  interpolace.py
   4 # Datum:   14.02.2013 13:11
   5 # Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   6 # Licence: GNU/GPL 
   7 # Úloha:   několik poznámek k intepolacím
   8 #          http://docs.scipy.org/doc/scipy/reference/interpolate.html
   9 #          http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html
  10 ###################################################3 
  11 import matplotlib as mpl
  12 mpl.use('GTKAgg')
  13 mpl.use('Qt4Agg')
  14 mpl.rc('font', family = 'serif', serif = 'cmr10') 
  15 mpl.rcParams['text.usetex']=True
  16 mpl.rcParams['text.latex.unicode']=True
  17 
  18 #import numpy as num
  19 import scipy.interpolate as interpol
  20 import pylab as lab
  21 from pylab import pi
  22 #interactive mode 
  23 #lab.ion()
  24 #lab.ioff()
  25 
  26 x= "0 0.3 0.5 0.8 1  2  3".split()
  27 y= "0 0.1 0.5 1   3 10 30".split()
  28 # z řetězců čísla
  29 x=map(float,x)
  30 y=map(float,y)
  31 
  32 lab.figure(1)
  33 lab.title('Interpolace')
  34 lab.plot(x,y,'ro',label='vzorky')
  35 lab.grid()
  36 lab.xlim([min(x)-1,max(x)+1])
  37 lab.ylim([min(y)-1,max(y)+1])
  38 
  39 newX = lab.linspace(min(x), max(x),300)
  40 # spline
  41 newY = interpol.spline(x,y,newX)
  42 lab.plot(newX,newY,label='spline')
  43 
  44 # UnivariateSpline
  45 funkce=interpol.UnivariateSpline(x,y,s=0)
  46 newY=funkce(newX)
  47 lab.plot(newX,newY,label='UnivariateSpline s=0')
  48 
  49 funkce=interpol.UnivariateSpline(x,y)
  50 newY=funkce(newX)
  51 lab.plot(newX,newY,label='UnivariateSpline')
  52 
  53 #LSQUnivariateSpline
  54 funkce = interpol.LSQUnivariateSpline(x,y,[0.5, 0.8])
  55 newY = funkce(newX)
  56 lab.plot(newX,newY,label='LSQUnivariateSpline',alpha=0.5)
  57 
  58 # interp1d
  59 # ( linear , nearest ,  zero ,  slinear ,  quadratic,  cubic )
  60 funkce = interpol.interp1d(x,y, kind='quadratic')
  61 newY = funkce(newX)
  62 lab.plot(newX,newY,label='interp1d quadratic',alpha=0.5)
  63 # interp1d
  64 # ( linear , nearest ,  zero ,  slinear ,  quadratic,  cubic )
  65 funkce = interpol.interp1d(x,y, kind='nearest')
  66 newY = funkce(newX)
  67 lab.plot(newX,newY,label='interp1d nearest',alpha=0.5)
  68 
  69 lab.legend(loc='best')
  70 lab.show()

`--> stáhnout

| navigace |

Sympy

| navigace |

Tipy a triky

| navigace |

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net