Azimlib0.3.0 · documentation

Rótulos globais e textos da Figure

Outputs under gallery/ are local generated previews, not distributed assets. For versioned current images, see the 0.3 gallery.

suptitle, supxlabel e supylabel pertencem à Figure e servem a todos os mapas de um atlas. São opcionais e devolvem um Artist próprio editável:

import azimlib as azl

fig, axes = azl.subplots(1, 2, figsize=(9, 6), layout="constrained")
for ax in axes.flat:
    ax.states(facecolor="white", edgecolor="black", linewidth=0.4)

title = fig.suptitle("Atlas regional")
xlabel = fig.supxlabel("Longitude")
ylabel = fig.supylabel("Latitude")
xlabel.set(text="Longitude geográfica", fontsize=13, color="#333333")
ylabel.set_visible(False)
fig.savefig("atlas.svg")

As chamadas seguintes reutilizam o mesmo handle, atualizam texto/posição e reaplicam defaults de fonte, peso, alinhamento e rotação, como na referência instalada. Outras propriedades já editadas, como cor/visibilidade, permanecem até serem fornecidas novamente. get_suptitle(), get_supxlabel() e get_supylabel() devolvem o texto ou "" se não existir.

Componente Posição inicial (x,y) Alinhamento Rotação
fig.suptitle() (0.5, 0.98) center/top 0°
fig.supxlabel() (0.5, 0.01) center/bottom 0°
fig.supylabel() (0.02, 0.5) left/center 90°

As coordenadas são frações da Figure, com Y para cima. Os defaults de fonte usam figure.titlesize/titleweight e figure.labelsize/labelweight em rcParams. O tamanho padrão "large" equivale a 1,2 vezes font.size (12 pt com base de 10 pt). Tamanhos numéricos e nomes usuais são aceitos nestas propriedades; isso não amplia automaticamente os contratos de todos os outros componentes de texto.

Edição, visibilidade e ownership

title.set_position((0.5, 0.95))
title.set_x(0.45)
azl.setp(xlabel, text="Coordenada X", position=(0.5, 0.02), color="black")
xlabel.get_position()
xlabel.set_in_layout(False)  # desenha, mas não reserva margem
xlabel.set_visible(False)   # não desenha
xlabel.remove()             # remove o handle da Figure

Textos criados por fig.text(x, y, ...) também têm posição editável, setters de alinhamento/rotação e rotation_mode="default"/"anchor". Default alinha a caixa após rotação; anchor gira o texto já alinhado ao redor da posição. Os rótulos globais usam default. Métricas, shaping complexo e a baseline de texto rotacionado ainda não são integralmente equivalentes ao Matplotlib.

Lotes de posição/estilo são validados antes de mudar o estado e notificam uma vez com o resultado final. Edição invalida a Figure; clear() desanexa os handles e limpa os três slots. fig.text() continua um texto livre, sem reserva automática de espaço ou correção geral de colisões.

azimlib.pyplot.suptitle() e figtext() usam a Figure corrente. Como no Matplotlib instalado, supxlabel/supylabel são métodos da Figure, sem funções homônimas em pyplot.

Regras de layout

Não adiciona grid, norte, escala ou minimapa. A exportação HTML recebe o layout composto; não executa esse solver Python ao navegar no browser.

Exemplo e validação

O atlas (gallery/figure-labels-atlas.png, generated locally) combina os três rótulos globais, dois mapas, ticks rotacionados, colorbar horizontal, legenda, escala e norte. Seu código usa apenas Azimlib.

Comparações com Axes/layout independentes do Matplotlib: tight (gallery/figure-labels-tight-comparison.png, generated locally), constrained (gallery/figure-labels-constrained-comparison.png, generated locally) e hierarquia (gallery/figure-labels-nested-comparison.png, generated locally). São exemplos com os mesmos dados/tamanhos/estilos, não imagens iguais. Há diferenças de fontes, reservas, aspecto e comprimento da colorbar; os solvers não são equivalentes. O caso tight não tem colorbar; os casos constrained demonstram barras compartilhadas, e na hierarquia a barra pertence somente ao grid filho.

16 contratos foram registrados diretamente do Matplotlib 3.11.2/Agg e comparados em testes sem importar Matplotlib. Doze novas regressões incluem 24 combinações de layout/hierarquia/tamanho/DPI, edição, visibilidade, remoção, falha atômica, exports SVG/HTML e exemplos PNG. O script de desenvolvimento tools/inspect_figure_labels.py recria os contratos e as três comparações; Matplotlib não integra o runtime.

Dimensões/DPI públicos e títulos laterais independentes são descritos em integração de composição.