Spoiler: Use Vizdom.dev para renderizar DAGs escritos na linguagem DOT
Como desenvolvedor de software, ocasionalmente trabalhei com DAGs – a maioria dos quais envolve visualizá-los. Em muitos casos, achei difícil conseguir uma renderização rápida e me vi procurando por ferramentas.
Felizmente, existe o confiável
Exceto…
*Ok, tecnicamente o Graphviz pode ser compilado para WebAssembly, e algumas pessoas talentosas conseguiram construir alguns projetos legais, como o do dreampuf
Por exemplo, quero armazenar meu gráfico em
eu poderia usar
Infelizmente, tenho que traduzir o DOT para o tipo de redução que o Mermaid exige. Para representações textuais menores, posso usar o ChatGPT para convertê-las para mim, mas ele frequentemente comete erros gramaticais e o gráfico se recusa a ser renderizado – tornando-o não confiável como fonte de automação.
Então há
Sim - eu construí um
…E é construído inteiramente em Rust 🦀 com muitos agradecimentos a
dr - um aplicativo simples e desenvolvido especificamente para renderizar DAGs online, rapidamente
Minimizar os cruzamentos de arestas na geração de gráficos, um desafio reconhecido como NP-difícil, é a chave para a criação de gráficos visualmente atraentes. A equipe da Terrastruct publicou um excelente
Esta versão é particularmente eficaz para renderizar gráficos hierárquicos, aproveitando as intrincadas complexidades deste problema.
A renderização de DAGs grandes (mais de 500 nós/arestas) tende a ser um tanto lenta com o Graphviz. Dagre + D3 (
Acredito que seja um bom compromisso para os tipos de atributos que o DOT gerado programaticamente consumirá.
Bem, é uma comparação entre maçãs e laranjas. Graphviz ainda produz ótimas visualizações e suporta mais
Sim, eu sei que é terrível comparar anos de experiência e ferramentas em torno da sequência de mais de 30 anos que é o Graphviz, mas para meu caso de uso restrito, é extremamente rápido. Aqui estão alguns tempos de parede no meu Macbook Pro M1 para renderização
* Ele trava porque o sinalizador emscripten, ALLOW_MEMORY_GROWTH=1
, não está definido, limitando assim a memória total a 16 MB. Isso pode ser corrigido, mas não encontrei um projeto online que possa lidar com o gráfico em questão.
** O gráfico de exemplo é renderizado selecionando Example 14
na visualização do editor. Atualizar a página resultará na atualização da página e na obtenção de um 414 porque o URI que persiste no gráfico é muito grande. Estou trabalhando em uma solução melhor para armazenar gráficos maiores.
Você notará que ao fazer qualquer alteração no arquivo DOT, a URL atualiza imediatamente alguns parâmetros de consulta para armazenar o gráfico e as opções de layout, permitindo que você sempre faça referência a uma cópia de seus dados apenas armazenando o link!
Há um problema: gráficos grandes tendem a tornar o URI muito grande para AWS (onde
Atualmente estou trabalhando em uma solução para lidar com gráficos maiores, mas enquanto isso, incluí algumas maneiras de persistir e armazenar gráficos:
Aqui está um exemplo de como é a visualização do editor do
Vá para a Visualização do Editor e carregue Example 42
Ocasionalmente, me peguei tentando comparar dois gráficos que gerei, então, enquanto fazia isso, adicionei um
Legenda da cor:
Aqui estão algumas fotos:
Clique em mim: alterando um ID de nó de “e” para “f”
Clique em mim: adicionando “cluster=true”
Se você tiver algum comentário, sinta-se à vontade para me enviar uma mensagem no
Obrigado pela leitura - Se você gostou deste artigo, siga-o !
[1]: ER Gansner, E. Koutsofios, SC Norte e K.. -P. Vo, “Uma técnica para desenhar gráficos direcionados”, em IEEE Transactions on Software Engineering, vol. 19, não. 3, pp. 214–230, março de 1993, doi: 10.1109/32.221135.
Também publicado aqui