Grades e Sombreamento com pcolormesh

Beginner

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

Introdução

Matplotlib é uma biblioteca de visualização de dados para Python. Ela oferece uma variedade de ferramentas para criar visualizações estáticas, animadas e interativas em Python. Neste laboratório, aprenderemos como usar as funções pcolormesh e pcolor em Matplotlib para visualizar grades 2D.

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

Primeiramente, precisamos importar as bibliotecas necessárias, Matplotlib e NumPy, executando o seguinte bloco de código:

import matplotlib.pyplot as plt
import numpy as np

Criar Dados para Visualização

Em seguida, criaremos uma grade 2D que usaremos para visualização. Podemos criar uma grade usando a função meshgrid em NumPy. A função meshgrid cria uma grade de pontos dados dois vetores, x e y, que representam as coordenadas dos pontos da grade. Criaremos uma grade de 5x5 pontos usando o seguinte bloco de código:

nrows = 5
ncols = 5
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
X, Y = np.meshgrid(x, y)
Z = X + Y

Sombreamento Plano (Flat Shading)

A função pcolormesh em Matplotlib pode visualizar grades 2D. A especificação da grade com o mínimo de suposições é shading='flat' e se a grade for uma unidade maior que os dados em cada dimensão, ou seja, tiver a forma (M+1, N+1). Nesse caso, X e Y especificam os cantos dos quadriláteros que são coloridos com os valores em Z. Podemos visualizar a grade usando o seguinte bloco de código:

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='flat', cmap='viridis')
ax.set_title('Flat Shading')
plt.show()

Sombreamento Plano (Flat Shading), Grade de Mesmo Formato

Se a grade tiver o mesmo formato que os dados em cada dimensão, não podemos usar shading='flat'. Historicamente, o Matplotlib descartava silenciosamente a última linha e coluna de Z neste caso, para corresponder ao comportamento do Matlab. Se este comportamento ainda for desejado, basta descartar a última linha e coluna manualmente. Podemos visualizar a grade usando o seguinte bloco de código:

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', cmap='viridis')
ax.set_title('Flat Shading, Same Shape Grid')
plt.show()

Sombreamento Mais Próximo (Nearest Shading), Grade de Mesmo Formato

Normalmente, descartar uma linha e coluna de dados não é o que o usuário pretende quando define X, Y e Z com o mesmo formato. Para este caso, o Matplotlib permite shading='nearest' e centraliza os quadriláteros coloridos nos pontos da grade. Se uma grade que não tem o formato correto for passada com shading='nearest', um erro será gerado. Podemos visualizar a grade usando o seguinte bloco de código:

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='nearest', cmap='viridis')
ax.set_title('Nearest Shading, Same Shape Grid')
plt.show()

Sombreamento Automático (Auto Shading)

É possível que o usuário queira que o código escolha automaticamente qual sombreamento usar; neste caso, shading='auto' decidirá se deve usar o sombreamento flat ou nearest com base nos formatos de X, Y e Z. Podemos visualizar a grade usando o seguinte bloco de código:

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='auto', cmap='viridis')
ax.set_title('Auto Shading')
plt.show()

Sombreamento Gouraud (Gouraud Shading)

O Gouraud shading também pode ser especificado, onde a cor nos quadriláteros é interpolada linearmente entre os pontos da grade. Os formatos de X, Y e Z devem ser os mesmos. Podemos visualizar a grade usando o seguinte bloco de código:

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='gouraud', cmap='viridis')
ax.set_title('Gouraud Shading')
plt.show()

Resumo

Neste laboratório, aprendemos como usar as funções pcolormesh e pcolor no Matplotlib para visualizar grades 2D. Aprendemos sobre diferentes opções de sombreamento, incluindo flat, nearest, auto e gouraud. Também aprendemos como criar uma grade 2D usando a função meshgrid no NumPy.