O melhor módulo para criar gráficos em python
É dificílimo superestimar a qualidade do módulo matplotlib
. Ele é extremamente versátil para a criação de uma imensa variedade de gráficos 2D e 3D, com uma qualidade impressionante. Apesar de não ser o único módulo para essa finalidade, ele é sem dúvida o mais difundido mundo afora.
Além disso, é impossível (para mim, que tenho um tempo limitado e usado para muitas tarefas dentro da universidade!) deixar aqui mais do que algumas recomendações para o seu uso, na forma de alguns templates (modelos) de uso de alguns tipos simples de gráfico. Você encontra muitas outras informações na documentação do matplotlib (https://matplotlib.org/users/index.html) e em tutoriais espalhados pela internet (recomendo este: https://github.com/rougier/matplotlib-tutorial).
Nesse curso veremos apenas como fazer gráficos 2D com o módulo matplotlib.pyplot
. Teste os exemplos abaixo na caixa do trinket.io para ver o que acontece.
Um gráfico de dados fornecidos em listas:
import matplotlib.pyplot as plt
x = [0, 1, 3, 2, 3, 4]
y = [1, 3, 5, 1, 8, 3]
plt.figure()
plt.plot(x, y)
plt.show()
Veja que, por padrão, o python apenas liga os dados com linhas, mas não identifica os pontos por símbolos. Troque o comportamento acima mudando a linha com a função plt.plot
por
plt.plot(x, y, 'o')
ou por
plt.plot(x, y, '-o')
Existem muitas outras opções de símbolos, tipos de linhas e cores, que você encontra na documentação ou em tutoriais.
Você pode usar quantos comandos
plt.plot()
você quiser dentro de um mesmo gráfico!
Vejamos agora como alterar propriedades como rótulos dos eixos, limites do gráfico e legenda. O exemplo abaixo sumariza algumas mudanças.
import matplotlib.pyplot as plt
x = [0, 1, 3, 2, 3, 4]
y = [1, 3, 5, 1, 8, 3]
plt.figure()
plt.plot(x, y, '--o', label='medidas experimentais')
plt.xlim(0,5)
plt.ylim(0,10)
plt.xlabel('valores de $x$') # veja que dá pra usar LaTeX!
plt.ylabel('valores de $f(x)$')
plt.legend()
plt.show()
Você pode combinar o matplotlib
com recursos do numpy
para fazer gráficos de funções matemáticas:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi, 2*np.pi, 101)
y = np.cos(x)
plt.figure()
plt.plot(x, y, label='$\cos(x)$')
plt.xlim(-np.pi,2*np.pi)
plt.ylim(-1.2, 1.2)
plt.xlabel('$x$') # veja que dá pra usar LaTeX!
plt.ylabel('$\cos(x)$')
plt.axhline(y=0, color='k') # eixo x
plt.axvline(x=0, color='k') # eixo y
plt.legend()
plt.show()
Um tipo de gráfico muito útil para apresentar medidas experimentais, e seus respectivos desvios-padrão, é o gráfico com barras de erros. Os exemplos abaixo mostram o que você deve fazer.
Quando o desvio é o mesmo para todos os pontos, faça simplesmente isso:
import numpy as np
import matplotlib.pyplot as plt
x = [0, 1, 3, 2, 3, 4]
y = [1, 3, 5, 1, 8, 3]
desvio = .5
plt.figure()
plt.errorbar(x, y, yerr=desvio, fmt='ro', ecolor='black', linestyle=None, capsize=2, label='experimental')
plt.legend()
plt.show()
Digamos agora que o desvio corresponde a 10% dos valores de y
. Faça o seguinte: troque a definição de desvio
por desvio = .1 * np.array(y)
. Veja que, para facilitar a nossa vida, criamos uma versão de y
como um array antes de multiplicar por 0.1. Caso contrário, teríamos que usar um laço ou list comprehension: desvio = [.1 * v for v in y]
Digamos agora que os desvios são diferentes para cada ponto, mas não são necessariamente uma porcentagem do valor medido. Nesse caso também não é difícil de criar um gráfico com barras de erros: basta criar uma nova lista (ou array) com os desvios de cada ponto.
import numpy as np
import matplotlib.pyplot as plt
x = [0, 1, 3, 2, 3, 4]
y = [1, 3, 5, 1, 8, 3]
desvio = [.4, .2, .3, .4, 1, .5]
plt.figure()
plt.errorbar(x, y, yerr=desvio, fmt='ro', ecolor='black', linestyle=None, capsize=2, label='experimental')
plt.legend()
plt.show()
Página atualizada em 10/15/2020, 11:15:31 AM