Introdução
Neste laboratório, usaremos a biblioteca Matplotlib do Python para calcular a média (mu) e o desvio padrão (sigma) de 100 conjuntos de dados e plotar mu vs. sigma. Também adicionaremos interatividade ao gráfico para que, ao clicar em um dos pontos (mu, sigma), os dados brutos do conjunto de dados que gerou este ponto sejam plotados.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Gerar Dados Aleatórios
Primeiramente, precisamos gerar 100 conjuntos de dados aleatórios, cada um contendo 1000 números aleatórios entre 0 e 1. Usaremos o módulo random do numpy para gerar os dados aleatórios.
import numpy as np
np.random.seed(19680801)
X = np.random.rand(100, 1000)
Calcular a Média e o Desvio Padrão
Em seguida, calcularemos a média e o desvio padrão de cada um dos 100 conjuntos de dados. Usaremos as funções mean e std do numpy para calcular esses valores.
xs = np.mean(X, axis=1)
ys = np.std(X, axis=1)
Plotar os Dados
Agora, plotaremos mu vs. sigma usando o módulo pyplot do Matplotlib. Criaremos um gráfico de dispersão (scatter plot) usando os valores calculados para mu e sigma. Também adicionaremos interatividade ao gráfico definindo o parâmetro picker como True.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_title('click on point to plot time series')
line, = ax.plot(xs, ys, 'o', picker=True, pickradius=5)
Adicionar Interatividade
Quando um ponto no gráfico de dispersão for clicado, queremos plotar os dados brutos (raw data) do conjunto de dados que gerou aquele ponto. Definiremos uma função onpick que será chamada quando um ponto for clicado. A função plotará os dados brutos e exibirá a média e o desvio padrão para aquele conjunto de dados.
def onpick(event):
if event.artist != line:
return
N = len(event.ind)
if not N:
return
figi, axs = plt.subplots(N, squeeze=False)
for ax, dataind in zip(axs.flat, event.ind):
ax.plot(X[dataind])
ax.text(.05, .9, f'mu={xs[dataind]:1.3f}\nsigma={ys[dataind]:1.3f}',
transform=ax.transAxes, va='top')
ax.set_ylim(-0.5, 1.5)
figi.show()
fig.canvas.mpl_connect('pick_event', onpick)
Exibir o Gráfico
Finalmente, exibiremos o gráfico usando a função show.
plt.show()
Resumo
Neste laboratório, aprendemos como usar Matplotlib para calcular a média e o desvio padrão de 100 conjuntos de dados e plotar mu vs. sigma. Também adicionamos interatividade ao gráfico para que, quando um ponto for clicado, os dados brutos (raw data) do conjunto de dados que gerou aquele ponto sejam exibidos. Este laboratório demonstra o poder e a flexibilidade do Matplotlib para explorar e visualizar dados.