Criação de Gráficos de Contorno para Dados Irregulares

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Este laboratório demonstra como criar um gráfico de contorno de dados com espaçamento irregular em Python usando Matplotlib. O gráfico de contorno mostra a distribuição 2D dos valores dos dados usando iso-contornos ou linhas de contorno. Neste exemplo, compararemos um gráfico de contorno de dados com espaçamento irregular interpolados em uma grade regular versus um gráfico tricontour para uma grade triangular não estruturada.

Dicas da 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

Começamos importando as bibliotecas necessárias para este exemplo: matplotlib.pyplot e numpy. Adicionalmente, importamos matplotlib.tri para a triangulação dos dados.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.tri as tri

Gerar dados aleatórios

Geramos dados aleatórios usando o método np.random.uniform do NumPy. Geramos npts = 200 pontos de dados com valores x e y entre -2 e 2. Também calculamos os valores z usando a função z = x * np.exp(-x**2 - y**2).

np.random.seed(19680801)
npts = 200
x = np.random.uniform(-2, 2, npts)
y = np.random.uniform(-2, 2, npts)
z = x * np.exp(-x**2 - y**2)

Interpolação em uma grade

Criamos um gráfico de contorno de coordenadas de dados espaçados irregularmente via interpolação em uma grade. Primeiro, criamos valores de grade para x e y usando np.linspace. Em seguida, interpolamos linearmente os dados (x, y) em uma grade definida por (xi, yi) usando tri.LinearTriInterpolator. Plotamos os dados interpolados com o axes.Axes.contour usual.

ngridx = 100
ngridy = 200
xi = np.linspace(-2.1, 2.1, ngridx)
yi = np.linspace(-2.1, 2.1, ngridy)

triang = tri.Triangulation(x, y)
interpolator = tri.LinearTriInterpolator(triang, z)
Xi, Yi = np.meshgrid(xi, yi)
zi = interpolator(Xi, Yi)

fig, ax1 = plt.subplots()
cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap="RdBu_r")
ax1.plot(x, y, 'ko', ms=3)
ax1.set(xlim=(-2, 2), ylim=(-2, 2))
ax1.set_title('Contour Plot of Irregularly Spaced Data Interpolated on a Grid')
fig.colorbar(cntr1, ax=ax1)
plt.show()

Tricontour

Plotamos os mesmos dados usando um gráfico tricontour, fornecendo diretamente as coordenadas desordenadas e irregularmente espaçadas para axes.Axes.tricontour.

fig, ax2 = plt.subplots()
cntr2 = ax2.tricontourf(x, y, z, levels=14, cmap="RdBu_r")
ax2.plot(x, y, 'ko', ms=3)
ax2.set(xlim=(-2, 2), ylim=(-2, 2))
ax2.set_title('Tricontour Plot of Irregularly Spaced Data')
fig.colorbar(cntr2, ax=ax2)
plt.show()

Resumo

Este laboratório demonstrou como criar um gráfico de contorno de dados irregularmente espaçados em Python usando Matplotlib. Comparamos um gráfico de contorno de dados irregularmente espaçados interpolados em uma grade regular versus um gráfico tricontour para uma grade triangular não estruturada. Os métodos axes.Axes.contour e axes.Axes.tricontour foram usados para criar os gráficos de contorno.