Layout em Camadas (DAGs)
Um dos recursos mais poderosos do animaflow é o layout em camadas (auto_layout_layers), projetado para posicionar grafos acíclicos direcionados (DAGs) complexos sem sobreposição de caixas.
Como Funciona o Algoritmo
O método flow.auto_layout_layers() organiza o diagrama em colunas de estágios lógicos:
flowchart LR
subgraph Camada 0
A[Client]
end
subgraph Camada 1
B[Auth Service]
C[Billing Service]
end
subgraph Camada 2
D[Database]
end
A --> B
A --> C
B --> D
C --> D
- Cálculo da Largura Máxima por Coluna: Cada nó tem sua largura estimada com base no comprimento dos textos
nameesubtitle. O algoritmo encontra a maior largura de cada coluna. - Distribuição Horizontal com Gap Fixo (
h_gap): O centro $X$ de cada coluna é posicionado mantendo o espaçamento livre especificado entre a borda direita de uma coluna e a borda esquerda da seguinte. - Alinhamento e Centralização Vertical (
v_gap): Dentro de cada coluna, os nós são empilhados verticalmente e o bloco inteiro é centralizado verticalmente no eixo $Y=0$.
Exemplo de Uso
# Definindo as camadas como listas de nós
layer_0 = [user_client]
layer_1 = [api_gateway]
layer_2 = [auth_worker, order_worker, email_worker] # 3 nós em paralelo
layer_3 = [database_cluster]
# Executa o auto-layout
flow.auto_layout_layers(
layers=[layer_0, layer_1, layer_2, layer_3],
h_gap=1.8, # Espaço horizontal entre as bordas das colunas
v_gap=0.9 # Espaço vertical entre os nós paralelos
)
Parâmetros do auto_layout_layers``auto_layout_layers
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
layers |
List[List[Node]] |
obrigatório | Lista de colunas, onde cada coluna contém um ou mais nós |
h_gap |
float |
1.5 |
Distância mínima horizontal entre a borda mais externa de uma coluna e a próxima |
v_gap |
float |
0.8 |
Distância mínima vertical entre nós adjacentes na mesma coluna |