Azimlib0.3.0 · documentation

Do Matplotlib para mapas com Azimlib

Esta é a API da fundação 0.2.0, independente de Matplotlib/GIS. Versão 0.2.0 disponível no PyPI. Aceite visual Windows e CI Windows/Linux/macOS; aparência nativa Linux/macOS não conferida. O catálogo delimita as famílias suportadas. Familiaridade com Matplotlib não significa que qualquer argumento de Matplotlib já exista.

Instalar e escolher a saída

Com Python 3.10 ou superior, escolha a instalação necessária:

python -m pip install azimlib
python -m pip install "azimlib[png]"
python -m pip install "azimlib[gui]"
python -m pip install "azimlib[gui,accelerate]"

Escolha a instalação necessária: core gera SVG e HTML sem dependências; png acrescenta Pillow; gui acrescenta Pillow, aggdraw e NumPy genéricos, e usa Tk do Python. Geometria, projeções, composição e estilos continuam próprios; aggdraw apenas preenche polígonos de stroke já construídos durante a navegação. Tk não é instalado por pip. Matplotlib não é necessário. Para desenvolvimento na raiz de um checkout, use pip install -e ".[dev]". A publicação 0.2.0 registra os artefatos verificados. Veja distribuição e validação e proveniência dos dados.

accelerate é opcional: NumPy/Numba compilam o kernel de cobertura da Azimlib para traçados longos. Não substituem geometria, projeções ou renderização por outra biblioteca cartográfica. O primeiro raster paga importação/compilação e o compilador ocupa memória adicional; sem ele, PNG/Tk continuam funcionando.

savefig() cria um arquivo estático. azl.show() abre o canvas desktop e bloqueia até fechar, enquanto fig.show() não bloqueia por padrão. fig.show(backend='browser', open_browser=False, path='mapa.html') grava a alternativa HTML sem abrir janela; ela não mantém uma conexão com Python. Veja viewer e limites HTML.

Começar sem componentes automáticos

import azimlib as azl

fig, ax = azl.subplots(figsize=(6.4, 4.8), projection='mercator')
ax.map('brazil', facecolor='white', edgecolor='black', linewidth=.8)
ax.states(edgecolor='#777777', linewidth=.4)
ax.set_title('Brasil')
ax.set_xlabel('Longitude', labelpad=4)
ax.set_ylabel('Latitude', labelpad=4)
fig.savefig('brasil.svg')
azl.close(fig)

Adicione ax.grid(), ax.legend(), ax.scale_bar(), ax.north_arrow(), ax.compass() ou ax.overview() explicitamente. A grade começa desativada, e a legenda só ganha título quando title=... é fornecido. Norte e rosa dos ventos são componentes diferentes; ambos podem existir juntos.

Editar pelos handles

import azimlib as azl

fig, ax = azl.subplots(figsize=(7, 5), layout='constrained')
ax.state('SP', facecolor='#eeeeee', edgecolor='#666666')
line, = ax.plot([-51, -49, -47], [-24, -23, -22], 'D--',
                color='#9467bd', markersize=6, label='Rota sintética')
title = ax.set_title('São Paulo')
scale = ax.scale_bar(length=100, fontsize=9)
north = ax.north_arrow(loc='upper left')
compass = ax.compass(loc='upper right')
overview = ax.overview(context='brazil', loc='lower right')
legend = ax.legend(loc='upper right')
line.set(linewidth=1.3, markerfacecolor='white')
title.set_text('São Paulo · componentes independentes')
compass.set_visible(False)
scale.set(length=50, fontsize=10)
ax.set_xlabel('Longitude', labelpad=6)
ax.set_ylabel('Latitude', labelpad=6)
ax.tick_params(labelrotation=35, labelrotation_mode='default')
fig.savefig('estado.svg')
azl.close(fig)

Em um viewer aberto, fig.canvas.draw_idle() solicita o redesenho depois de uma edição. set_visible(False) oculta e remove() descarta o Artist. Não se regenere uma legenda implicitamente ao mudar uma camada: chame ax.legend() de novo se quiser reconstruir seus handles. Textos livres/annotations podem se sobrepor; layout automático não resolve qualquer colisão. labels(placement='auto') oferece a busca cartográfica própria, com prioridade e halo. Textos, rotação, labels e layout.

Colorbar ligada ao dado

import azimlib as azl
from azimlib.colors import Normalize

fig, ax = azl.subplots(figsize=(7, 6), projection='mercator', layout='constrained')
states = azl.datasets.load('states', country='brazil')
values = [float(i) for i in range(len(states['features']))]
layer = ax.choropleth(states, values, bins=None, cmap='viridis',
                      norm=Normalize(0, 26), edgecolor='white', linewidth=.4)
bar = fig.colorbar(layer, ax=ax, orientation='horizontal', label='Indicador sintético')
bar.set_ticks([0, 10, 20, 30])
layer.set_clim(0, 30)
bar.ax.tick_params(labelsize=9)
bar.set_label('Indicador sintético atualizado', labelpad=6)
ax.set_title('Estados · valores demonstrativos')
fig.savefig('tematico.svg')
azl.close(fig)

A barra acompanha norm, cmap e clim do mappable. Há orientação vertical e horizontal, quatro posições, cax, barra compartilhada, ticks major/minor, extensões, remoção e controles do outline. O eixo da barra é um proxy próprio, não um MapAxes completo. Cores e colorbars, edições agrupadas e normas compartilhadas.

Os instintos que mudam

Hábito Regra da Azimlib
x, y de plot/scatter Longitude, latitude em graus, nesta ordem; lon=/lat= também existem
Tamanho e estilo figsize em polegadas, fontes/linewidth/labelpad/markersize em pontos, scatter s em pontos²
extent (west, east, south, north) em graus, também para campos escalares; limites crescentes
Projeção Seis projeções esféricas próprias; não se entrega um objeto Cartopy/pyproj
Aspecto do mapa A projeção preserva proporção espacial; o quadro visível pode ocupar menos que o espaço alocado
imshow(Z) Campo escalar 2D; no desenvolvimento 0.3 também RGB/RGBA, GeoTIFF e resampling explícito (guia)
quiver(U,V) Componentes leste/norte; a direção é calculada na projeção
Densidade Contagem suavizada em células angulares, não pessoas/km² nem KDE geodésico
Escala Distância esférica local na latitude/posição da barra, não uma escala uniforme de toda a projeção
Textos rotacionados default alinha a caixa após rotação; anchor alinha antes; xtick/ytick escolhem alinhamento por ângulo
Hachuras /, \\, `
plot() / edição Retorna lista; line, = ...; dados finitos, sem gaps NaN/máscaras ou inversão de eixos neste corte
Navegação Tk recalcula geografia/ornamentos; HTML navega uma cena exportada e tem limites por projeção

Acabamento/PDF na 0.3.0 development · Equivalências detalhadas · matemática · tipos de mapas · reprodução da galeria.