sábado, 18 de julho de 2020

Gráficos de contorno com Matplotlib

Gráficos de contorno com Matplotlib

Com a biblioteca Matplotlib podemos criar gráficos de contorno de uma maneira muita rápida. Um gráfico de contorno pode ser muito útil em algumas áreas, como na engenharia Civil. Na engenharia Civil um gráfico de contorno pode mostrar o contorno de uma construção ou elevação. Já na engenharia Mecânica o mesmo tipo de gráfico pode mostrar um gradiente de tensão na superfície de uma peça.

Método plt.contourf()

Para podermos criar um gráfico de contorno precisaremos necessariamente usar o método contour(). Um exemplo de como chamar o método contour() pode ser visto abaixo:

Exemplo Python

ax.contour(X, Y, Z)

X, Y e Z são matrizes 2D com os seus elementos representando um ponto do gráfico. As arrays X e Y são pontos de coordenadas de x e y. Já a array Z é uma matriz que determinada a altura do contorno. Essa representação é feita num gráfico 2D através de uma cor.
No exemplo abaixo vamos utilizar a função np.meshgrid() para criarmos duas arrays 2D utilizando uma matriz 1D.

Exemplo Python

import numpy as np
import matplotlib.pyplot as plt
# Se estiver usando o Jupyter notebook, inclua:
# %matplotlib inline
        
        
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
        
Z = np.sin(X)*np.cos(Y)
        
fig, ax = plt.subplots(figsize=(6, 6))
        
ax.contour(X, Y, Z)
        
plt.show()

Ao executar o código acima você deve ter como resultado um gráfico como esse:

Método plt.contourf()

O método contourf() da biblioteca Matplotlib é semelhante ao método contourf(), a única diferença entre esses dois métodos é que o primeiro método criar um gráfico preenchido e o segundo não. Para chamar o método contourf passamos os mesmos parâmetros que passamos para o método contour. Veja um exemplo abaixo:

Exemplo Python

ax.contourf(X, Y, Z)
    

X e Y são arrays 2D dos pontos x e y, e Z é uma matriz 2D de pontos que determina a cor das áreas no gráfico 2D.
A próxima parte do código cria uma gráfico de contorno sombreada usando o método contourf() da biblioteca Matplotlib.

Exemplo Python

import numpy as np
import matplotlib.pyplot as plt
# se estiver utilizando o Jupyter notebook, use:
# %matplotlib inline
        
        
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
        
X, Y = np.meshgrid(x, y)
        
Z = np.sin(X)*np.cos(Y)
        
fig, ax = plt.subplots(figsize=(6,6))
        
ax.contourf(X,Y,Z)
        
plt.show()

Executando esse código o seu gráfico deve estar igual a este:

Barras coloridas no gráfico de contorno

Nos gráfico de contorno utilizamos as cores parar representar uma determinada altura, mas sem saber a qual altura uma cor representar isso não é muito útil. Para resolver esse problema, nos gráficos de contornos, normalmente é adicionada uma barra colorida representando a altura. Essa barra funciona como uma legenda do gráfico.
As barras de cores utilizadas nos gráficos de contorno são adicionadas com o método colorbar(). Por essa barra não pertencer ao gráfico ela precisa ser adicionada. Para fazer isso passamos um gráfico de contorno para o método colorbar(). Assim, toda vez que você precisar adicionar uma barra de cores a um gráfico, um objeto plot precisar estar disponível. E a saída do método contourf() é um objeto plot.
Nos exemplos anteriores, a saída do método contourf() não era atribuída a nenhuma variável. Mas, para adicionar uma barra de cores no nosso gráfico, vamos precisar da saída desse método. Assim podemos passar um objeto plot para o método colorbar().

Exemplo Python

cf = ax.contourf(X,Y,Z)
fig.colorbar(cf, ax = ax)

cf é o objeto plot criado pelo método contourf(). O objeto eixocontém o gráfico de contorno, ax é passado para o método colorbar()junto com o objeto plot.

Executando o exemplo abaixo criamos um gráfico de contorno preenchido com uma barra de cores posicionada ao lado do gráfico.

Exemplo Python

import numpy as np
import matplotlib.pyplot as plt
        
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
        
X, Y = np.meshgrid(x, y)
        
Z = np.sin(X)*np.cos(Y)
        
fig, ax = plt.subplots(figsize=(6,6))
        
ax.set_aspect('equal')
cf = ax.contourf(X,Y,Z)
fig.colorbar(cf, ax = ax)
        
plt.show()

Executando código acima o gráfico é esse:

Mapas de cores

O esquema de cores usado nos gráficos de contornos podem ser mudados. O método mais rápido de se fazer isso é usando o método get_cmap() da biblioteca Matplotlib. Na biblioteca Matplotlib existem vários mapas de cores que você pode usar nos seus gráficos. Para ver quais mapas de cores estão disponíveis acesse a documentação da biblioteca (https://matplotlib.org). Já com o mapa de cores precisamos passar esse objeto para o método ou contourf().

Exemplo Python

meu_mapc = plt.get_cmap('gist_earth')
ax.contourf(X, Y, Z, cmap = meu_mapc)

No exemplo abaixo vamos alterar a cor padrão dos gráficos de contorno.

Exemplo Python

import matplotlib.pyplot as plt
import numpy as np
        
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
        
X, Y = np.meshgrid(x, y)
        
Z = np.sin(X)*np.cos(Y)
        
fig, ax = plt.subplots(figsize=(6,6))
        
meu_mapc = plt.get_cmap('plasma')
ax.set_aspect('equal')
ax.set_title('Mapa de cores: plasma')
cf = ax.contourf(X,Y,Z, cmap = meu_mapc)
        
fig.colorbar(cf, ax = ax)
        
plt.show()

Executando esse código o seu gráfico deve estar igual a este:

domingo, 31 de maio de 2020

Como você executa um loop while no Python?

Como você executa um loop while no Python?

O que é um "loop while"?

Um loop while consiste em uma condição e, até que essa condição seja verdadeira, um conjunto de instruções é executado repetidamente.
Um loop while é a única construção de repetição necessária. O loop for, pode ser duplicado usando um loop while e com mais controle.

A sintaxe é a seguinte:

Exemplo

Aqui está uma olhada no código do loop while:

Exemplo
x = 4
y = 0
while (y <= 10 ): # o loop while vai ser executado enquanto y for menor ou igual a 10
  y += x
  x += 1

# o loop vai iterar 3 vezes
print("O valor de x é: ", x)
print("O valor de y é: ", y)

Explicação

No código acima, o loop while é executado enquanto a condição y <= 10 estiver sendo atendida. As instruções nas linhas 4 e 5 são executadas se a expressão entre parênteses for avaliada como verdadeira. br Quando a expressão é avaliada como falsa, o programa sai do loop e imprime os valores finais de x e y. Abaixo está uma ilustração do código acima para ajudar a ilustrar a lógica.

Fonte: How do you execute a 'while loop' in Python?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

Como try/except é usado em Python?

Como try/except é usado em Python?

Manipulação de exceção

Uma exceção é um erro que ocorre enquanto o programa está executando. Quando esse erro ocorre, o programa é interrompido e gera uma exceção, que é manipulada para impedir que o programa trave.

try/except

As exceções geradas por um programa são capturadas no bloco try e tratadas no bloco except.

  • Try: Permite testar um bloco de código quanto a erros.
  • Except: permite lidar com o erro.

Exemplos

Vamos dar uma olhada em um exemplo simples de try/excption.

Exemplo
try:
  print(x)
except:
  print("Um erro ocorreu")

Como x não está definido em nenhum lugar do código, ocorrerá uma exceção; portanto, o bloco de exceção executará e exibirá a mensagem.
Você pode definir quantos blocos de exceção desejar para erros diferentes, como mostrado abaixo.

Exemplo
try:
  print(x)
except ValueError: #você receberá esse erro se houver um problema com o conteúdo do objeto ao qual você tentou atribuir o valor
  print("Dados não numéricos encontrados")
except NameError: #você receberá esse erro se o programa encontrar um nome que não reconheça
  print("A variável x não foi definida")
except:
  print("Algum erro aconteceu")

Você também pode usar a palavra-chave else para definir o código que deve ser executado se nenhum erro for gerado.

Exemplo
try:
  print("Hello World")
except ValueError:
  print("Dados não numéricos encontrados")
except NameError:
  print("A variável x não foi definida")
except:
  print("Algum erro aconteceu")
else:
  print("Nada de errado aconteceu")

Fonte: How is try/except used in Python?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

O que são tuplas em Python?

O que são tuplas em Python?

O que é tupla?

Uma tupla é uma lista imutável de objetos Python, o que significa que não pode ser alterada de forma alguma depois de criada. Ao contrário dos sets, as tuplas são uma coleção ordenada.

Criando uma tupla

Agora vamos dar uma olhada no exemplo de uma tupla.

Exemplo
tupleExmp = ("alpha","bravo","charlie")
print(tupleExmp)

Depois que uma tupla é criada, os itens não podem ser adicionados ou removidos e seus valores não podem ser alterados. Alterar a tupla acima gera um erro.

Exemplo
tupleExmp = ("alpha","bravo","charlie")
tupleExmp[0] = "100" # um erro será lançado

Acessando itens de tupla

Os índices de tupla são baseados em zero, como em uma lista; portanto, o primeiro elemento de uma tupla não vazia é sempre a tupla[0].
Os índices selecionados são contados a partir do final da tupla, assim como as lista.

Exemplo
tupleExmp = ("alpha","bravo","charlie")
print(tupleExmp[1]) # mostra o segundo elemento
print(tupleExmp[-1]) # mostra o último elemento

Você também pode percorrer os valores da tupla usando um loop for.

Exemplo
tupleExmp = ("alpha","bravo","charlie")
for item in tupleExmp:
  print(item)

Comprimento de uma tupla

O comprimento de uma tupla pode ser encontrado usando a função len().

Exemplo
tupleExmp = ("alpha","bravo","charlie")
print(len(tupleExmp))

Fonte: What are tuples in Python?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

O que são sets em Python?

O que são sets em Python?

O que é um set?

Um set é um monte não ordenado e não indexado de valores únicos.
Um único set pode conter valores de qualquer tipo de dados imutável, o que significa que os valores não podem ser alterados. Um conjunto em si é um objeto mutável, ou seja, um objeto que pode ser alterado após ser criado, mas não os seus elementos.

Criando um conjunto

Vamos aprender como criar um conjunto.

Exemplo
a_set = {'alpha', 'bravo', 'charlie'}
print(a_set)

#Um set também pode ser criado usando a função built-in set()
#set() recebe uma lista de elementos e converte num set

my_set = set([1, 2, 3, 4, 5])
print(my_set)

Acessando itens

Os sets não são indexados, portanto, você não pode acessar itens em um conjunto consultando um índice. O que você pode fazer é percorrer o conjunto para obter um valor específico.

Exemplo
a_set = {'alpha', 'bravo', 'charlie'}
for item in a_set:
  print(item)

Nota: Os set não são ordenados, portanto os itens aparecerão em uma ordem aleatória.

Métodos

O Python possui um conjunto de métodos internos que você pode usar em sets. Alguns deles estão especificados abaixo:

  • Adicionar itens: depois que um conjunto é criado, você não pode alterá-los, mas pode adicionar novos itens. Para adicionar um item a um conjunto, use o método add() e para adicionar mais de um item a um conjunto, use o método update().
  • Remover itens: para remover um item de um conjunto, use o método remove(). Você também pode usar o método discard() para remover.
Exemplo
a_set = {'alpha', 'bravo', 'charlie'}
print("Adicionando valor ao set")
a_set.add('jenny')
print(a_set)
a_set.update(['matty', 'johny'])
print("Adicionando valores ao set com update")
print(a_set)
print("Removendo valores do set")
a_set.remove('matty') #se o valor não existir um erro será lançado
print(a_set)
print("Retirando valores do set")
a_set.discard('johny') #se o valor não existir nenhum erro será lançado
print(a_set)
  • Comprimento do set: o método len() pode ser usado para determinar a contagem de itens em um conjunto.
  • Limpar conjunto: o método clear() esvazia o conjunto.
Exemplo
a_set = {'alpha', 'bravo', 'charlie'}
print("O número de itens é: ", (len(a_set)))
a_set.clear()
print("set esvaziado")
print(a_set)

Fonte: What are sets in Python?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

O que são arrays em Python?

O que são arrays em Python?

Arrays são uma coleção de itens semelhantes. No Python, a maioria das pessoas usa listas em vez de arrays. Um usuário pode tratar listas como arrays, mas não pode restringir o tipo de dados de valores armazenados em uma lista. Somente o mesmo tipo de dados pode ser armazenado em arrays. Uma representação pictórica de arrays é mostrada abaixo:

  • O comprimento dessa matriz é 5.
  • O tipo de dados dos valores armazenados nessa matriz é inteiro.

Definindo matrizes em Python

Para criar matrizes em Python, precisamos importar o módulo de matriz para criar matrizes. Um exemplo disso mostrado abaixo:

Exemplo
import array as arr # importa o módulo array
a = arr.array('i', [1, 3, 5, 2, 4]) # define uma array do tipo inteiro com 5 elementos

'i' é o código do tipo para o tipo de dados dos valores da matriz. Nesse caso, o tipo de matriz é int.

Acessando valores de matriz

Os valores das matrizes são acessados usando os índices da matriz:

Exemplo
nomeArray[index]
  • O índice de matrizes em Python começa em 0.

Por exemplo:

Suponha que desejamos acessar o valor no terceiro índice da matriz. A ilustração e o trecho de código abaixo mostram como isso é feito.

Exemplo
import array as arr
a = arr.array('i',[1, 3, 5, 2, 4])
print("O valor no index 3 é: ")
print(a[3])

Fonte: What are arrays in Python?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

sábado, 30 de maio de 2020

Códigos de tipos em Python

Códigos de tipos em Python

As arrays em python se comportam muito semelhantes às listas, mas elas têm o mesmo tipo de dados armazenados nela. O tipo de dados é especificado no momento da criação da matriz, usando um único caractere chamado código de tipo.
Abaixo está a tabela para códigos de tipo, usados para definir matrizes em python, e seu tipo de dados correspondente em C++.

Código de tipo Tipo C++ Tipo Python Tamanho mínimo em bytes
'c' char Carácter 1
'b' signed char int 1
'B' unsigned char int 1
'u' Py_UNICODE Carácter unicode 2
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 2
'I' unsigned int long 2
'l' signed long int 4
'L' unsigned long long 4
'f' float float 4
'd' double float 8

Abaixo está um exemplo de uma matriz, do tipo char em C ++ e caractere em python.

C++
#include <iostream>
using namespace std;

int main() {
  char a[5] = {'a','e','i','o','u'}; // define uma array do tipo char para 5 elementos

  for (int i = 0; i < 5; i++){
    cout << a[i] << " "; // mostra na tela
  }

}
Python
import array as arr # importando o módulo array

a = arr.array('c',['a','e','i','o','u']) # cria uma array
print(a) # mostra na tela

Fonte: Type codes in Python
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)