Azimlib0.3.0 · documentation

Estilos e recortes: Azimlib × Matplotlib/Agg

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

Nove pares em 100/150/200 DPI comparam a mesma Scene própria, fontes e tamanhos físicos em dois rasterizadores. Matplotlib 3.11.2/Agg é usado somente na ferramenta de desenvolvimento; o pacote e seus renderizadores continuam independentes.

Inspeção visual dos painéis traços/100 DPI (gallery/style-quality-strokes-100-comparison.png, generated locally), recortes/100 DPI (gallery/style-quality-clipping-100-comparison.png, generated locally) e hachuras/200 DPI (gallery/style-quality-hatches-200-comparison.png, generated locally) não identificou defeito material adicional nestes exemplos. Persistem diferenças pequenas de suavização, hinting de fonte e cobertura dos traços; os pixels não são idênticos. Cada par também tem PNG separado, SVG próprio e imagem de diferença na galeria.

Medições descritivas

MAE é a diferença RGB absoluta média em escala 0–255. A média ocupada exclui somente o fundo branco comum; o percentual conta pixels cuja maior diferença de canal excede 16. Não são notas de qualidade nem limiares de aprovação. Os exemplos têm áreas e quantidades de tinta diferentes, portanto as linhas da tabela não devem ser usadas para classificar estilos ou escolher DPI.

Caso DPI MAE RGB MAE ocupada Pixels com diferença >16
Traços 100 3.587 4.902 3.33%
Traços 150 3.774 5.206 3.21%
Traços 200 1.843 2.561 1.96%
Recortes 100 1.736 3.377 2.11%
Recortes 150 2.201 4.294 2.08%
Recortes 200 2.117 4.140 1.79%
Hachuras 100 1.356 11.128 1.31%
Hachuras 150 1.076 9.802 0.89%
Hachuras 200 0.759 7.989 0.58%

Dados completos incluem versões, dimensões, itens, hashes dos PNGs e dos renderizadores usados.

Alcance e reprodução

Esta comparação isola rasterização. Não compara a composição de Axes/ticks/layout independente do Matplotlib, sua cartografia ou seu viewer. Os paths de hachura foram gerados pela Azimlib e enviados aos dois renderizadores: não demonstra igualdade com o gerador nativo de hachuras do Matplotlib. O adaptador de referência desenha halo como contorno vetorial sob texto com hinting; caminhos complexos autointersectantes com even-odd ficam fora de seu contrato.

Os SVGs foram conferidos como XML válido, com dimensões correspondentes aos PNGs. Não se fez nesta bateria uma segunda rasterização independente dos SVGs. A igualdade byte a byte antes/depois da otimização é uma regressão entre versões do renderer próprio, separada da comparação diagnóstica com Agg.

Em ambiente de desenvolvimento com Pillow, NumPy e Matplotlib instalados:

python tools/compare_style_quality.py --cases strokes clipping hatches --dpi 100 150 200

O comando gera imagens e relatório, sem medir performance. Veja também mapas completos e tempo do rasterizador.