Visualização com Matplotlib e Coleções

Beginner

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

Introdução

Este tutorial irá guiá-lo através da criação de uma visualização usando coleções do Matplotlib. O tutorial mostrará como usar LineCollection, PolyCollection e RegularPolyCollection. O tutorial também mostrará como usar os argumentos de palavra-chave offsets e offset_transform de LineCollection e PolyCollection para definir as posições das espirais. O tutorial também mostrará como usar o RegularPolyCollection para criar polígonos regulares.

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 às limitações do 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

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import collections, transforms

O primeiro passo é importar as bibliotecas necessárias. Usaremos Matplotlib e Numpy para este tutorial.

Criar espirais

nverts = 50
npts = 100

## Make some spirals
r = np.arange(nverts)
theta = np.linspace(0, 2*np.pi, nverts)
xx = r * np.sin(theta)
yy = r * np.cos(theta)
spiral = np.column_stack([xx, yy])

O próximo passo é criar espirais usando Numpy. Usaremos as funções sin e cos para criar as espirais.

Criar deslocamentos (offsets)

## Fixing random state for reproducibility
rs = np.random.RandomState(19680801)

## Make some offsets
xyo = rs.randn(npts, 2)

O terceiro passo é criar deslocamentos usando Numpy. Usaremos a função random para criar os deslocamentos.

Criar LineCollection usando deslocamentos (offsets)

col = collections.LineCollection(
    [spiral], offsets=xyo, offset_transform=ax1.transData)
trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
col.set_transform(trans)
col.set_color(colors)

ax1.add_collection(col, autolim=True)
ax1.autoscale_view()

ax1.set_title('LineCollection using offsets')

O quarto passo é criar um LineCollection usando deslocamentos (offsets). Usaremos o LineCollection para criar curvas com deslocamentos. Também usaremos o offset_transform para definir as posições das curvas.

Criar PolyCollection usando deslocamentos (offsets)

col = collections.PolyCollection(
    [spiral], offsets=xyo, offset_transform=ax2.transData)
trans = transforms.Affine2D().scale(fig.dpi/72.0)
col.set_transform(trans)
col.set_color(colors)

ax2.add_collection(col, autolim=True)
ax2.autoscale_view()

ax2.set_title('PolyCollection using offsets')

O quinto passo é criar um PolyCollection usando deslocamentos (offsets). Usaremos o PolyCollection para preencher as curvas com cores. Também usaremos o offset_transform para definir as posições das curvas.

Criar RegularPolyCollection usando deslocamentos (offsets)

col = collections.RegularPolyCollection(
    7, sizes=np.abs(xx) * 10.0, offsets=xyo, offset_transform=ax3.transData)
trans = transforms.Affine2D().scale(fig.dpi / 72.0)
col.set_transform(trans)
col.set_color(colors)

ax3.add_collection(col, autolim=True)
ax3.autoscale_view()

ax3.set_title('RegularPolyCollection using offsets')

O sexto passo é criar um RegularPolyCollection usando deslocamentos (offsets). Usaremos o RegularPolyCollection para criar polígonos regulares com deslocamentos. Também usaremos o offset_transform para definir as posições dos polígonos.

Criar deslocamentos (offsets) sucessivos de dados

## Simulate a series of ocean current profiles, successively
## offset by 0.1 m/s so that they form what is sometimes called
## a "waterfall" plot or a "stagger" plot.

nverts = 60
ncurves = 20
offs = (0.1, 0.0)

yy = np.linspace(0, 2*np.pi, nverts)
ym = np.max(yy)
xx = (0.2 + (ym - yy) / ym) ** 2 * np.cos(yy - 0.4) * 0.5
segs = []
for i in range(ncurves):
    xxx = xx + 0.02*rs.randn(nverts)
    curve = np.column_stack([xxx, yy * 100])
    segs.append(curve)

col = collections.LineCollection(segs, offsets=offs)
ax4.add_collection(col, autolim=True)
col.set_color(colors)
ax4.autoscale_view()

ax4.set_title('Successive data offsets')
ax4.set_xlabel('Zonal velocity component (m/s)')
ax4.set_ylabel('Depth (m)')
ax4.set_ylim(ax4.get_ylim()[::-1])

O sétimo passo é criar deslocamentos (offsets) sucessivos de dados. Usaremos o LineCollection para criar curvas com deslocamentos sucessivos.

Resumo

Este tutorial mostrou como usar as coleções do Matplotlib para criar visualizações. Você aprendeu como usar LineCollection, PolyCollection e RegularPolyCollection para criar curvas e polígonos. Você também aprendeu como usar os argumentos de palavra-chave offsets e offset_transform do LineCollection e PolyCollection para definir as posições das espirais.