스포일러: Vizdom.dev를 사용하여 DOT 언어로 작성된 DAG를 렌더링합니다.
소프트웨어 개발자로서 저는 가끔 DAG를 사용해 작업했는데, 대부분 시각화 작업이 포함되었습니다. 많은 경우 빠른 렌더링이 어려워 툴링을 찾게 되었습니다.
다행히도 믿을 만한 사람이 있어
제외하고…
*좋습니다. 기술적으로 Graphviz는 WebAssembly로 컴파일될 수 있으며 몇몇 재능 있는 사람들은 dreampuf와 같은 몇 가지 깔끔한 프로젝트를 구축했습니다.
예를 들어, 그래프를 다음 위치에 저장하고 싶습니다.
나는 사용할 수 있었다
아쉽게도 DOT를 Mermaid가 요구하는 마크다운의 맛으로 번역해야 합니다. 더 작은 텍스트 표현의 경우 ChatGPT를 사용하여 변환할 수 있지만 문법 오류가 자주 발생하고 그래프 렌더링이 거부되므로 자동화 소스로서 신뢰할 수 없습니다.
그럼 거기에
응 — 내가 만들었어
…그리고 완전히 Rust로 제작되었습니다 🦀
tl;dr — DAG를 온라인으로 빠르게 렌더링하기 위해 특별히 제작된 간단한 앱
그래프 생성 시 가장자리 교차를 최소화하는 것은 시각적으로 매력적인 그래프를 만드는 핵심인 NP 하드 과제입니다. Terrastruct 팀은 뛰어난 결과를 발표했습니다.
이 버전은 이 문제의 복잡한 복잡성을 활용하여 계층적 그래프를 렌더링하는 데 특히 효과적입니다.
Graphviz에서는 대규모 DAG(500개 이상의 노드/에지) 렌더링이 다소 느린 경향이 있습니다. 다그레 + D3 (
저는 이것이 프로그래밍 방식으로 생성된 DOT가 소비할 속성 종류에 대한 좋은 절충안이라고 믿습니다.
글쎄, 그것은 사과 대 오렌지 비교입니다. Graphviz는 여전히 훌륭한 시각화를 생성하고 더 많은 것을 지원합니다.
예, 30년 이상의 연속 Graphviz에 대한 수년간의 경험과 도구를 비교하는 것이 끔찍하다는 것을 알고 있지만 좁은 사용 사례에서는 엄청나게 빠릅니다. 내 M1 Macbook Pro의 렌더링 시간은 다음과 같습니다.
* emscripten 플래그인 ALLOW_MEMORY_GROWTH=1
설정되지 않아 총 메모리가 16MB로 제한되어 충돌이 발생합니다. 이 문제는 해결할 수 있지만 문제의 그래프를 처리할 수 있는 온라인 프로젝트를 찾지 못했습니다.
** 예제 그래프는 편집기 보기에서 Example 14
선택하여 렌더링됩니다. 그래프에 유지되는 URI가 너무 크기 때문에 페이지를 새로 고치면 페이지가 새로 고쳐지고 414가 표시됩니다. 더 큰 그래프를 저장하기 위한 더 나은 솔루션을 개발 중입니다.
DOT 파일을 변경하면 URL이 몇 가지 쿼리 매개변수를 즉시 업데이트하여 그래프와 레이아웃 옵션을 저장하므로 링크를 저장하는 것만으로 항상 데이터 복사본을 참조할 수 있습니다.
문제가 있습니다. 큰 그래프는 AWS에 비해 URI를 너무 크게 만드는 경향이 있습니다(여기서
저는 현재 더 큰 그래프를 처리하기 위한 솔루션을 개발 중이지만 그동안 그래프를 유지하고 저장하는 몇 가지 방법을 포함시켰습니다.
다음은 편집기 보기의 모양에 대한 예입니다.
Editor View 로 이동하여 Example 42
로드합니다.
때때로 나는 내가 생성한 두 개의 그래프를 비교하려고 시도하는 것을 발견했습니다. 그래서 그 동안 나는 다음을 추가했습니다.
색상 범례:
다음은 몇 가지 스냅샷입니다.
Click me: 노드 ID를 "e"에서 "f"로 변경
의견이 있으시면 언제든지 저에게 메시지를 보내주세요.
읽어주셔서 감사합니다. 이 기사가 마음에 드셨다면 팔로우해주세요 !
[1]: ER Gansner, E. Koutsofios, SC North 및 K. -피. Vo, "유향 그래프를 그리는 기술", IEEE Transactions on Software Engineering, vol. 19, 아니. 3, pp. 214–230, 1993년 3월, doi: 10.1109/32.221135.
여기에도 게시됨