Loading [MathJax]/jax/output/HTML-CSS/jax.js

Mudanças entre as edições de "Ipython tutoria 2012"

De Stoa
Ir para: navegação, pesquisa
(Editar gráficos - Títulos / legendas / textos.)
(Instalação do Ipython)
 
(8 edições intermediárias de um usuário não apresentadas)
Linha 1: Linha 1:
 
== Introdução ==
 
== Introdução ==
Em abril de 2012, [[:en:Cleve_Moler|Cleve Moler]], recebeu o prêmio [http://www.computer.org/portal/web/awards/pioneer/|'''Pioneiros da Computação''' do IEEE]. Ele é o criador do programa [http://www.mathworks.com/products/matlab/|'''MATLAB'''], um ambiente de programação numérica que revolucionou a idéia de programação e simulação, principalmente nas áreas aplicadas de engenharia, biologia e economia. O programa é um produto comercializado pela empresa Mathworks que também é presidida por Cleve Moler, e o pacote completo do software é bastante caro! Existem algumas alternativas similares ao '''MATLAB''' com código aberto. Os mais populares são os programas [http://www.scilab.org/| '''SCILAB''']  e [http://www.octave.org/|'''OCTAVE''']. O objetivo deste texto é apresentar uma outra alternativa interessante que é um ambiente chamado [http://ipython.org/|'''Ipython'''].  
+
Em abril de 2012, [[:en:Cleve_Moler|Cleve Moler]], recebeu o prêmio [http://www.computer.org/portal/web/awards/pioneer/ '''Pioneiros da Computação''' do IEEE]. Ele é o criador do programa [http://www.mathworks.com/products/matlab/ '''MATLAB'''], um ambiente de programação numérica que revolucionou a idéia de programação e simulação, principalmente nas áreas aplicadas de engenharia, biologia e economia. O programa é um produto comercializado pela empresa Mathworks que também é presidida por Cleve Moler, e o pacote completo do software é bastante caro! Existem algumas alternativas similares ao '''MATLAB''' com código aberto. Os mais populares são os programas [http://www.scilab.org/ '''SCILAB''']  e [http://www.octave.org/ '''OCTAVE''']. O objetivo deste texto é apresentar uma outra alternativa interessante que é um ambiente chamado [http://ipython.org/ '''Ipython'''].  
  
[http://www.python.org/| Python] é uma linguagem de programação genérica de código livre. Uma das características desta linguagem é que possui um console que executa comandos assim que teclamos ENTER. Este console original do Python tem poucos recursos de edição.
+
[http://www.python.org/ Python] é uma linguagem de programação genérica de código livre. Uma das características desta linguagem é que possui um console que executa comandos assim que teclamos ENTER. Este console original do Python tem poucos recursos de edição.
 
Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib),
 
Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib),
 
o resultado é um ambiente muito parecido com o '''MATLAB''' (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste  
 
o resultado é um ambiente muito parecido com o '''MATLAB''' (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste  
Linha 10: Linha 10:
  
 
Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional ''windows'', a forma mais fácil é instalar o
 
Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional ''windows'', a forma mais fácil é instalar o
[http://www.pythonxy.com| Pythonxy]. Este pacote vem com um conjunto de aplicativos direcionados à computação científica, inclusive o Ipython. Não é a última versão, mas é uma forma de rápida instalação.
+
[http://www.pythonxy.com Pythonxy]. Este pacote vem com um conjunto de aplicativos direcionados à computação científica, inclusive o Ipython. Não é a última versão, mas é uma forma de rápida instalação.
  
 
Nos sistemas derivados do ''Debian linux'' também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!).  
 
Nos sistemas derivados do ''Debian linux'' também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!).  
Linha 44: Linha 44:
  
 
Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes:
 
Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes:
 
+
{{ Ipyin | n=1
<syntaxhighlight enclose="none" lang="python" strict>
+
|
import matplotlib.pyplot as pl
+
c=<syntaxhighlight enclose="none" lang="python" strict>
 +
import matplotlib.pyplot as plt
 
import numpy as np
 
import numpy as np
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
}}
  
 
===== Plotar um conjunto de pontos qualquer =====
 
===== Plotar um conjunto de pontos qualquer =====
Linha 56: Linha 58:
 
Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y
 
Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y
  
<syntaxhighlight enclose="none" lang="python" strict>
+
{{ Ipyin | n=2
 +
|
 +
c=<syntaxhighlight enclose="none" lang="python" strict>
 
x=np.array([1,2,3,3,7,6,7,8,9])
 
x=np.array([1,2,3,3,7,6,7,8,9])
 
y=np.array([9,8,7,6,5,4,3,2,1])
 
y=np.array([9,8,7,6,5,4,3,2,1])
 
plt.plot(x,y) # A ordem dos parâmetros é a mesma usada na matemática (abscissa, ordenada)
 
plt.plot(x,y) # A ordem dos parâmetros é a mesma usada na matemática (abscissa, ordenada)
</syntaxhighlight>
+
</syntaxhighlight>}}
 +
 
 +
{{ Ipyout | n=2 | c=[<matplotlib.lines.Line2D at 0x4381ad0>]}}
  
<pre>[<matplotlib.lines.Line2D at 0x4381ad0>]
 
</pre>
 
  
  
Linha 77: Linha 81:
 
* comando lambda
 
* comando lambda
  
exemplo - def:
+
exemplo usando  ''def'':
 
+
{{ Ipyin | n=3
<div class="highlight"><pre><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
+
| c=
     <span class="sd">&quot;&quot;&quot;Calcula o valor de 1/x para x diferente de 0&quot;&quot;&quot;</span> <span class="c"># docstring - Explica brevemente o que a função retorna</span>
+
<syntaxhighlight enclose="none" lang="python">
     <span class="k">return</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span>
+
def f(x):
</pre></div>
+
     '''Calcula o valor de x^2'''
 +
    # docstring - Explica brevemente o que a função retorna
 +
     return x*x
 +
</syntaxhighlight>}}
  
  
Linha 88: Linha 95:
 
exemplo - lambda:
 
exemplo - lambda:
  
<div class="highlight"><pre><span class="n">g</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span>  <span class="n">x</span><span class="o">**</span><span class="n">x</span> <span class="c"># &#39;**&#39; potência</span>
+
{{ ipyin | n=4 | c=
</pre></div>
+
<syntaxhighlight enclose="none" lang="python">
 +
g= lambda x : x**x # ** potência
 +
</syntaxhighlight>}}
  
  
 
+
<syntaxhighlight lang="python">
<div class="highlight"><pre><span class="n">help</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+
help(f)
</pre></div>
+
</syntaxhighlight>
 
+
  
 
<pre>Help on function f in module __main__:
 
<pre>Help on function f in module __main__:
  
 
f(x)
 
f(x)
     Calcula o valor de 1/x para x diferente de 0</pre>
+
     Calcula o valor de x^2</pre>
 +
 
 
===== Editar gráficos - Títulos / legendas / textos. =====
 
===== Editar gráficos - Títulos / legendas / textos. =====
  
Linha 108: Linha 117:
 
Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos
 
Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos
  
<div class="highlight"><pre><span class="c"># Conjunto de pontos - Podemos criar intervalos com a função linspace()</span>
+
{{ Ipyin | n=5 | c=
<span class="n">t</span> <span class="o">=</span> <span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span> <span class="c"># O intervalo [-5,5] foi dividido em 1000 pontos</span>
+
<syntaxhighlight enclose="none" lang="python">
 +
# Conjunto de pontos - Podemos criar intervalos com a função linspace()
 +
t = linspace(-5,5,1000) # O intervalo [-5,5] foi dividido em 1000 pontos
  
<span class="c"># Título - Atenção nos parâmetros para ajustar o texto(fonte e posição)</span>
+
# Título - Atenção nos parâmetros para ajustar o texto(fonte e posição)
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&#39;f(x)&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">19</span><span class="p">,</span> <span class="n">verticalalignment</span> <span class="o">=</span> <span class="s">&#39;baseline&#39;</span><span class="p">,</span> <span class="n">horizontalalignment</span> <span class="o">=</span> <span class="s">&#39;center&#39;</span><span class="p">)</span>
+
plt.title("f(x)",fontsize = 19,verticalalignment = "baseline",horizontalalignment ="center")
  
<span class="c"># Nome nos eixos - Podemos usar os mesmos parâmetros para ajustar os textos nos comandos abaixo</span>
+
# Nome nos eixos - Podemos usar os mesmos parâmetros para ajustar os textos nos comandos abaixo</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;X&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">20</span><span class="p">)</span>                         
+
plt.xlabel("X&",fontsize = 20)                        
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Y&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="n">rotation</span> <span class="o">=</span> <span class="s">&#39;horizontal&#39;</span><span class="p">)</span> <span class="c"># Atenção no parâmetro para rotacionar o texto no eixo Y</span>
+
plt.ylabel("Y&",fontsize = 20, rotation="horizontal") # Atenção no parâmetro para rotacionar o texto no eixo Y
  
<span class="c"># Para plotar texto em pontos específicos do gráfico usamos  text().</span>
+
# Para plotar texto em pontos específicos do gráfico usamos  text().
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="s">&#39;$f(2)$&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">14</span><span class="p">)</span> <span class="c"># Atenção nas coordenadas!</span>
+
plt.text(2,4,"$f(2)", fontsize=14) # Atenção nas coordenadas!
  
<span class="c"># Tipo/cor/legenda - A cor e o tipo de linha podem ser alterados. Para ver todas as opções você pode usar o comando &#39;help(plot)&#39;</span>
+
# Tipo/cor/legenda - A cor e o tipo de linha podem ser alterados. Para ver todas as opções você pode usar o comando help(plot)
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">t</span><span class="p">,</span><span class="n">f</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="s">&#39;g&#39;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&#39;f(x)&#39;</span><span class="p">)</span>
+
plt.plot(t,f(t),"g",label="f(x)")
<span class="n">legend</span><span class="p">(</span><span class="n">loc</span> <span class="o">=</span> <span class="mi">4</span><span class="p">)</span> <span class="c"># &#39;loc&#39; muda o local da legenda. Pode variar de 0 à 10</span>
+
legend(loc=4)# loc muda o local da legenda. Pode variar de 0 à 10
 
+
<span class="c"># Para plotar linhas nos eixos podemos usar &#39;grid()&#39;</span>
+
<span class="n">grid</span><span class="p">()</span>
+
 
+
<span class="c"># Alterar o tamanho dos eixos</span>
+
<span class="n">axex</span> <span class="o">=</span> <span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+
<span class="n">axey</span> <span class="o">=</span> <span class="n">ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span>
+
</pre></div>
+
  
 +
# Para plotar linhas nos eixos podemos usar grid()
 +
grid()
  
 +
# Alterar o tamanho dos eixos
 +
axex=xlim(-10,10)
 +
axey=ylim(0,50)
 +
</syntaxhighlight>}}
  
 
[[Image:WIKI___MATPLOTLIB_fig_01.png|frame|none]]
 
[[Image:WIKI___MATPLOTLIB_fig_01.png|frame|none]]
Linha 140: Linha 149:
  
 
Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal.
 
Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal.
 
+
{{ Ipyin | n=6 | c=
<div class="highlight"><pre><span class="n">n</span> <span class="o">=</span> <span class="n">normal</span><span class="p">(</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">)</span>
+
<syntaxhighlight enclose="none" lang="python">
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
+
n=normal(size=1000)
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Valor&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
plt.hist(n)
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Frequencia&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
plt.xlabel("Valor",fontsize=17)
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&#39;Histograma&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
plt.ylabel("Frequencia",fontsize=17)
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
plt.title("Histograma",fontsize=17)
</pre></div>
+
plt.show()
 
+
</syntaxhighlight>}}
  
  
Linha 155: Linha 164:
 
Podemos alterar o números de intervalos de classe usando o parâmetro 'bins'
 
Podemos alterar o números de intervalos de classe usando o parâmetro 'bins'
  
<div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">bins</span> <span class="o">=</span> <span class="mi">20</span><span class="p">)</span>
+
{{ Ipyin | n=6 | c=
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Valor&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
<syntaxhighlight enclose="none" lang="python">
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Frequencia&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
plt.hist(n,bins=20)
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&#39;Histograma&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
plt.xlabel("Valor&",fontsize=17)
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
plt.ylabel("Frequencia",fontsize=17)
</pre></div>
+
plt.title("Histograma",fontsize=17)
 
+
plt.show()
 +
</syntaxhighlight>}}
  
  
Linha 168: Linha 178:
 
Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme.
 
Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme.
  
<div class="highlight"><pre><span class="n">u</span> <span class="o">=</span> <span class="n">uniform</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">)</span>
+
{{ Ipyin | n=7 |c=
</pre></div>
+
<syntaxhighlight enclose="none" lang="python">
 
+
u=uniform(-2,2,size=1000)
 
+
 
+
<div class="highlight"><pre><span class="c">#Atenção nos parâmetros &#39;histtype&#39; e &#39;alpha&#39;. &#39;histtype&#39; altera o visual do gráfico</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">bins</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="n">histtype</span> <span class="o">=</span> <span class="s">&#39;stepfilled&#39;</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="s">&#39;g&#39;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&#39;normal&#39;</span><span class="p">)</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">bins</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="n">histtype</span> <span class="o">=</span> <span class="s">&#39;stepfilled&#39;</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="s">&#39;r&#39;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&#39;uniforme&#39;</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">)</span> <span class="c"># Plot com 50% de transparência</span>
+
 
+
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&#39;Normal \ Uniforme&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;valor&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Frequencia&#39;</span><span class="p">,</span> <span class="n">fontsize</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
+
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
</pre></div>
+
  
 +
#Atenção nos parâmetros histtype e alpha. histtype altera o visual do gráfico
 +
plt.hist(n,bins=20,histtype="stepfilled", color="g",label="normal")
 +
plt.hist(u,bins=20,histtype="stepfilled",color="r",label="uniforme",alpha=0.5) # Plot com 50% de transparência
  
 +
plt.title("Normal \ Uniforme",fontsize=17)
 +
plt.xlabel("valor&",fontsize=17)
 +
plt.ylabel("Frequencia",fontsize=17)
 +
plt.legend()
 +
plt.show()
 +
</syntaxhighlight>}}
  
 
[[Image:WIKI___MATPLOTLIB_fig_04.png|frame|none]]
 
[[Image:WIKI___MATPLOTLIB_fig_04.png|frame|none]]

Edição atual tal como às 11h08min de 15 de fevereiro de 2013

Conteúdo

 [ocultar

[editar] Introdução

Em abril de 2012, Cleve Moler, recebeu o prêmio Pioneiros da Computação do IEEE. Ele é o criador do programa MATLAB, um ambiente de programação numérica que revolucionou a idéia de programação e simulação, principalmente nas áreas aplicadas de engenharia, biologia e economia. O programa é um produto comercializado pela empresa Mathworks que também é presidida por Cleve Moler, e o pacote completo do software é bastante caro! Existem algumas alternativas similares ao MATLAB com código aberto. Os mais populares são os programas SCILAB e OCTAVE. O objetivo deste texto é apresentar uma outra alternativa interessante que é um ambiente chamado Ipython.

Python é uma linguagem de programação genérica de código livre. Uma das características desta linguagem é que possui um console que executa comandos assim que teclamos ENTER. Este console original do Python tem poucos recursos de edição. Por exemplo, não há histórico dos comandos já digitados. O Ipython é um console do Python enriquecido com muitos novos recursos de edição, além de naturalmente acoplar outros módulos científicos do Python (NumPy, Scipy, SymPy e Matplotlib), o resultado é um ambiente muito parecido com o MATLAB (eventualmente mais lento para programas pesados), com a vantagem de dispor do desenvolvimento de Software Livre. Em particular estamos interessados em mostrar como a utilização deste software pode acompanhar o aprendizado de Cálculo Diferencial e Integral do primeiro ano. (P. A. Tonelli) 18h20min de 24 de julho de 2012 (BRT)

[editar] Instalação do Ipython

Em todos os sistemas operacionais a instalação do Ipython depende da instalação do Python. A forma mais fácil é instalar como uma distribuição em pacote. No sistema operacional windows, a forma mais fácil é instalar o Pythonxy. Este pacote vem com um conjunto de aplicativos direcionados à computação científica, inclusive o Ipython. Não é a última versão, mas é uma forma de rápida instalação.

Nos sistemas derivados do Debian linux também existem pacotes para o Ipython (Ipython, Ipython-Qt, Ipython-notebook, pode instalar todos!).

sudo apt-get install ipyhton ipython-qt ipython-notebook

[editar] Atualização dos programas

Quer você tenha instalado o Pythonxy, quer os pacotes das distribuições em Linux, é muito difícil que os programas Ipython e outros módulos usados pelo Ipython estejam atualizados. Vamos explicar como atualizar o pythonxy.

[editar] Atualização no Windows uma vez instalado o PyhtonXY

1. Na versão mais recente o PythonXY deve ter instalado um módulo chamado distribute. Abra o console do Windows e digite

 pip install --upgrade spyder

Isto atualiza o editor Spyder

2. Instale o programa pyzmq deste site do pyzmq

3. Para a nova versão do Ipython digite no console do windows

 pip install --upgrade ipython[zmq,qtconsole,notebook,test]

4. Tornado para o notebook

 pip install tornado

5. Será bom atualizar também o matplotlib e scipy

  pip install --upgrade matplotlib
  pip install --upgrade scipy

Com isto você terá o seu ambiente de programação. E pode começar a testá-lo digitando no console

  ipython notebook --pylab inline

[editar] Usando a Biblioteca Matplotlib

[editar] Matplotlib

Essa biblioteca é usada para construir gráficos em 2D (histogramas, funções em geral, espectros, entre outros). Veremos também como criar e plotar funções com textos em LaTeX nos gráficos. Os módulos básicos são os seguintes:

In[1]: import matplotlib.pyplot as plt

import numpy as np

[editar] Plotar um conjunto de pontos qualquer

Supondo dois conjunto de pontos com a mesma quantidade de elementos. Podemos estabelecer uma relação entre eles construindo um gráfico em um plano cartesiano.

Em python, nosso conjunto de pontos serão dados por arrays. Vamos chamá-los de x e y

In[2]: x=np.array([1,2,3,3,7,6,7,8,9])

y=np.array([9,8,7,6,5,4,3,2,1])
plt.plot(x,y) # A ordem dos parâmetros é a mesma usada na matemática (abscissa, ordenada)

Out[2]: [<matplotlib.lines.Line2D at 0x4381ad0>]


WIKI MATPLOTLIB fig 00.png

Antes de editar o gráfico vamos aprender a definir funções.

[editar] Funções

Há duas formas de definir uma função:

  • comando def
  • comando lambda

exemplo usando def:

In[3]: def f(x):

    '''Calcula o valor de x^2'''
    # docstring - Explica brevemente o que a função retorna
    return x*x


exemplo - lambda:

In[4]: g= lambda x : x**x # **  potência


help(f)
Help on function f in module __main__:

f(x)
    Calcula o valor de x^2
[editar] Editar gráficos - Títulos / legendas / textos.

Podemos atribuir nomes para o gráfico, ordenada / abscissa ou um ponto qualquer. O LaTeX pode ser usado para os textos.


Vamos usar a função f(x), definida anteriormente, para aprender os próximos passos

In[5]: # Conjunto de pontos - Podemos criar intervalos com a função linspace()

t = linspace(-5,5,1000) # O intervalo [-5,5] foi dividido em 1000 pontos

# Título - Atenção nos parâmetros para ajustar o texto(fonte e posição)
plt.title("$f(x)$",fontsize = 19,verticalalignment = "baseline",horizontalalignment ="center")

# Nome nos eixos - Podemos usar os mesmos parâmetros para ajustar os textos nos comandos abaixo</span>
plt.xlabel("$X$&",fontsize = 20)                          
plt.ylabel("$Y$&",fontsize = 20, rotation="horizontal") # Atenção no parâmetro para rotacionar o texto no eixo Y

# Para plotar texto em pontos específicos do gráfico usamos  text().
plt.text(2,4,"$f(2)", fontsize=14) # Atenção nas coordenadas!

# Tipo/cor/legenda - A cor e o tipo de linha podem ser alterados. Para ver todas as opções você pode usar o comando help(plot)
plt.plot(t,f(t),"g",label="f(x)")
legend(loc=4)# loc muda o local da legenda. Pode variar de 0 à 10

# Para plotar linhas nos eixos podemos usar grid()
grid()

# Alterar o tamanho dos eixos
axex=xlim(-10,10)
axey=ylim(0,50)

WIKI MATPLOTLIB fig 01.png
[editar] Histograma

Para facilitar, usando o comando normal(), vamos criar um conjunto de elementos dristribuídos segundo a distribuição normal.

In[6]: n=normal(size=1000)

plt.hist(n)
plt.xlabel("Valor",fontsize=17)
plt.ylabel("Frequencia",fontsize=17)
plt.title("Histograma",fontsize=17)
plt.show()


WIKI MATPLOTLIB fig 02.png

Podemos alterar o números de intervalos de classe usando o parâmetro 'bins'

In[6]: plt.hist(n,bins=20)

plt.xlabel("Valor&",fontsize=17)
plt.ylabel("Frequencia",fontsize=17)
plt.title("Histograma",fontsize=17)
plt.show()


WIKI MATPLOTLIB fig 03.png

Usando o parâmetro 'alpha' da função 'hist()' podemos sobrepor gráficos. Para exemplificar vamos usar a distribuição uniforme.

In[7]: u=uniform(-2,2,size=1000)


#Atenção nos parâmetros histtype e alpha. histtype altera o visual do gráfico
plt.hist(n,bins=20,histtype="stepfilled", color="g",label="normal")
plt.hist(u,bins=20,histtype="stepfilled",color="r",label="uniforme",alpha=0.5) # Plot com 50% de transparência

plt.title("Normal \ Uniforme",fontsize=17)
plt.xlabel("valor&",fontsize=17)
plt.ylabel("Frequencia",fontsize=17)
plt.legend()
plt.show()

WIKI MATPLOTLIB fig 04.png
Ferramentas pessoais
Espaços nominais

Variantes
Ações
Navegação
Imprimir/exportar
Ferramentas