Gráfico de Superfície de Caixa 3D

Beginner

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

Introdução

Este laboratório irá guiá-lo através da criação de um gráfico de superfície de caixa 3D usando Python e Matplotlib. Definiremos dimensões, criaremos dados simulados e plotaremos superfícies de contorno. Definiremos os limites do gráfico, plotaremos as bordas, definiremos rótulos e zticks, definiremos a visualização de zoom e ângulo e adicionaremos uma barra de cores (colorbar).

Dicas da VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook para 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ê.

Definir Dimensões

Defina as dimensões da caixa criando três variáveis para o comprimento de cada lado: Nx, Ny e Nz. Em seguida, crie três meshgrids para X, Y e Z usando o método arange do numpy. Finalmente, defina o valor negativo para Z para criar uma caixa em vez de um plano.

import matplotlib.pyplot as plt
import numpy as np

## Define dimensions
Nx, Ny, Nz = 100, 300, 500
X, Y, Z = np.meshgrid(np.arange(Nx), np.arange(Ny), -np.arange(Nz))

Criar Dados Falsos

Crie dados falsos para plotar usando uma fórmula para calcular dados com base nos valores de X, Y e Z. Adicionaremos um ao resultado para garantir que o valor mínimo seja maior que zero.

## Create fake data
data = (((X+100)**2 + (Y-20)**2 + 2*Z)/1000+1)

Plotar Superfícies de Contorno

Plote superfícies de contorno para a caixa usando o método contourf para cada superfície. Use os parâmetros apropriados para zdir e offset.

kw = {
    'vmin': data.min(),
    'vmax': data.max(),
    'levels': np.linspace(data.min(), data.max(), 10),
}

## Create a figure with 3D ax
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(111, projection='3d')

## Plot contour surfaces
_ = ax.contourf(
    X[:, :, 0], Y[:, :, 0], data[:, :, 0],
    zdir='z', offset=0, **kw
)
_ = ax.contourf(
    X[0, :, :], data[0, :, :], Z[0, :, :],
    zdir='y', offset=0, **kw
)
C = ax.contourf(
    data[:, -1, :], Y[:, -1, :], Z[:, -1, :],
    zdir='x', offset=X.max(), **kw
)

Definir Limites do Gráfico

Defina os limites do gráfico usando o método set e passando os limites das coordenadas X, Y e Z.

## Set limits of the plot from coord limits
xmin, xmax = X.min(), X.max()
ymin, ymax = Y.min(), Y.max()
zmin, zmax = Z.min(), Z.max()
ax.set(xlim=[xmin, xmax], ylim=[ymin, ymax], zlim=[zmin, zmax])

Plotar Bordas

Plote as bordas usando o método plot. Vamos plotar três linhas ao longo das coordenadas X e Y, e uma linha ao longo das coordenadas X e Z.

## Plot edges
edges_kw = dict(color='0.4', linewidth=1, zorder=1e3)
ax.plot([xmax, xmax], [ymin, ymax], 0, **edges_kw)
ax.plot([xmin, xmax], [ymin, ymin], 0, **edges_kw)
ax.plot([xmax, xmax], [ymin, ymin], [zmin, zmax], **edges_kw)

Definir Rótulos e Zticks

Defina os rótulos e zticks usando o método set. Definiremos os rótulos para as coordenadas X, Y e Z, e definiremos os zticks para mostrar a profundidade da caixa.

## Set labels and zticks
ax.set(
    xlabel='X [km]',
    ylabel='Y [km]',
    zlabel='Z [m]',
    zticks=[0, -150, -300, -450],
)

Definir Zoom e Ângulo de Visualização

Defina o zoom e o ângulo de visualização usando os métodos view_init e set_box_aspect. Definiremos o ângulo de visualização para 40 graus na direção X e -30 graus na direção Y, e o zoom para 0.9.

## Set zoom and angle view
ax.view_init(40, -30, 0)
ax.set_box_aspect(None, zoom=0.9)

Adicionar uma Barra de Cores (Colorbar)

Adicione uma barra de cores (colorbar) usando o método colorbar. Definiremos os parâmetros fraction e pad para ajustar a localização da barra de cores, e definiremos o rótulo para mostrar o nome e as unidades dos dados.

## Colorbar
fig.colorbar(C, ax=ax, fraction=0.02, pad=0.1, label='Name [units]')

Resumo

Neste laboratório, criamos um gráfico de superfície de caixa 3D usando Python e Matplotlib. Definimos dimensões, criamos dados simulados e plotamos superfícies de contorno. Definimos limites do gráfico, plotamos arestas, definimos rótulos e zticks, definimos o zoom e o ângulo de visualização e adicionamos uma barra de cores (colorbar). Este gráfico pode ser usado para visualizar dados 3D e explorar relações entre variáveis.