Introdução
Este laboratório é um tutorial passo a passo sobre como criar gráficos de contorno usando Python Matplotlib. Gráficos de contorno são úteis para visualizar dados tridimensionais em duas dimensões. Neste tutorial, ilustraremos a plotagem simples de contornos, contornos em uma imagem com uma barra de cores para os contornos e contornos rotulados.
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 as Bibliotecas Necessárias
Antes de começarmos a criar nosso gráfico de contorno, precisamos importar as bibliotecas necessárias. Usaremos numpy e matplotlib para este tutorial.
import matplotlib.pyplot as plt
import numpy as np
Criar Dados
Precisamos criar os dados que usaremos para criar o gráfico de contorno. Neste exemplo, criaremos duas funções Gaussianas 2D.
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
Criar um Gráfico de Contorno Simples com Rótulos
Agora que temos nossos dados, podemos criar um gráfico de contorno simples com rótulos usando cores padrão.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, inline=True, fontsize=10)
ax.set_title('Simplest default with labels')
Posicionar Rótulos de Contorno Manualmente
Também podemos posicionar rótulos de contorno manualmente, fornecendo uma lista de posições (em coordenadas de dados).
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
manual_locations = [
(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
ax.clabel(CS, inline=True, fontsize=10, manual=manual_locations)
ax.set_title('labels at selected locations')
Definir as Cores dos Contornos
Podemos forçar todos os contornos a terem a mesma cor ou definir os contornos negativos como sólidos em vez de tracejados.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k') ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours dashed')
plt.rcParams['contour.negative_linestyle'] = 'solid'
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k') ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours solid')
Especificar as Cores dos Contornos Manualmente
Também podemos especificar manualmente as cores do contorno.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6,
linewidths=np.arange(.5, 4, .5),
colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5'),
)
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Crazy lines')
Usar um Mapa de Cores para Especificar as Cores dos Contornos
Podemos usar um mapa de cores (colormap) para especificar as cores das linhas de contorno.
fig, ax = plt.subplots()
im = ax.imshow(Z, interpolation='bilinear', origin='lower',
cmap=cm.gray, extent=(-3, 3, -2, 2))
levels = np.arange(-1.2, 1.6, 0.2)
CS = ax.contour(Z, levels, origin='lower', cmap='flag', extend='both',
linewidths=2, extent=(-3, 3, -2, 2))
## Thicken the zero contour.
CS.collections[6].set_linewidth(4)
ax.clabel(CS, levels[1::2], ## label every second level
inline=True, fmt='%1.1f', fontsize=14)
## make a colorbar for the contour lines
CB = fig.colorbar(CS, shrink=0.8)
ax.set_title('Lines with colorbar')
## We can still add a colorbar for the image, too.
CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)
## This makes the original colorbar look a bit out of place,
## so let's improve its position.
l, b, w, h = ax.get_position().bounds
ll, bb, ww, hh = CB.ax.get_position().bounds
CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])
Resumo
Neste laboratório, aprendemos como criar gráficos de contorno (contour plots) usando Python Matplotlib. Cobrimos a criação de um gráfico de contorno simples com rótulos, a colocação manual de rótulos de contorno, a definição de cores de contorno, a especificação manual de cores de contorno e o uso de um mapa de cores (colormap) para especificar as cores de contorno.