Introdução
Neste tutorial, aprenderemos como usar a função LineCollection em Matplotlib para desenhar múltiplas linhas de forma eficiente de uma só vez. Veremos como plotar múltiplas linhas com diferentes cores e estilos, e como usar um array mascarado para mascarar alguns valores. Também aprenderemos como usar a função ScalarMappable.set_array para mapear um array de valores para cores.
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ê.
Importar Bibliotecas
Antes de começarmos, precisamos importar as bibliotecas necessárias. Usaremos matplotlib.pyplot e numpy.
import matplotlib.pyplot as plt
import numpy as np
Criar Dados
Em seguida, precisamos criar os dados que usaremos para plotar as linhas. Usaremos numpy para criar um array 2D de valores x e y.
x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]
Criar Line Collection
Agora, podemos criar um objeto LineCollection com a função LineCollection. Podemos definir os parâmetros linewidths, colors e linestyle para personalizar a aparência das linhas.
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x
segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)
line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
colors=colors, linestyle='solid')
Criar o Gráfico
Agora podemos criar um gráfico usando matplotlib e adicionar o objeto LineCollection ao gráfico usando o método add_collection do objeto Axes.
fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())
ax.add_collection(line_segments)
ax.set_title('Line collection with masked arrays')
plt.show()
Mapear Cores para Valores
Também podemos mapear um array de valores para cores usando a função ScalarMappable.set_array. Criaremos um novo conjunto de dados e um novo objeto LineCollection com o parâmetro array definido para os valores x. Podemos então usar o método colorbar do objeto Figure para adicionar uma barra de cores ao gráfico.
N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]
fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))
line_segments = LineCollection(segs, array=x,
linewidths=(0.5, 1, 1.5, 2),
linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('Line Collection with mapped colors')
plt.sci(line_segments)
plt.show()
Resumo
Neste tutorial, aprendemos como usar a função LineCollection em Matplotlib para desenhar eficientemente múltiplas linhas de uma só vez. Vimos como plotar múltiplas linhas com diferentes cores e estilos, e como usar um array mascarado (masked array) para mascarar alguns valores. Também aprendemos como usar a função ScalarMappable.set_array para mapear um array de valores para cores.