순수 JavaScript Graphviz 상당 [닫힘]


139

GraphViz가 생성 할 수있는 방향성 흐름도의 순수 자바 스크립트 기반 구현을 아는 사람이 있습니까? 나는 예쁜 비주얼 출력에 관심이 없지만, 나무가 아닌 그래프를 다룰 때 교차 가장자리 수를 최소화하도록 최적화 된 베 지어 선의 레이아웃과 함께 각 노드의 최대 깊이를 계산하는 계산 정보의. 이 코드를 브라우저에서 모두 실행하고 싶습니다. Graphviz를 확장으로 Node Server에 쉽게 포함하거나 popen()그래프 정보를 .dot형식으로 스트리밍 할 수 있음을 알고 있습니다 .

참고로 일반적인 GraphViz 출력이 있습니다. 연결선이 노드를 교차하거나 (매우 자주) 노드를 통과하지 않고 노드 사이를 이동할 수 있도록 요소가 쌓여 간격을 유지하는 방법에 유의하십시오.

여기에 이미지 설명을 입력하십시오


GraphViz에 익숙하지 않은 사람들을 위해 그러한 다이어그램의 예가 있습니까?
매트 볼


3
어쩌면-확인해보세요. 많은 의견과 응답은 GraphViz와 전혀 다르거 나 GraphViz 출력 만 그릴 수는 있지만 레이아웃 자체는 할 수없는 차트 도구를 가리키고 있습니다.
Armentage

답변:


84

.dot 캔버스 렌더러의이 순수한 JavaScript 구현을 살펴보십시오.

http://ushiroad.com/jsviz/

라이브러리는 문서화되어 있지 않습니다-저자는 분명히 그것을 더 많이 공개하고 문서화해야합니다 (최소한 github에 올려 놓으라고 제안하기 위해 그에게 연락 할 것입니다).

업데이트 : 코드가 github으로 푸시되었습니다 : https://github.com/gyuque/livizjs

업데이트 (2013 년 2 월 2 일) : 다른 경쟁자가 발생했습니다! 주제에 관심이있는 사람은 Viz.js의 예제 페이지github repo를 확실히 살펴보십시오 .

업데이트 (7/16/2020) : (7 년 후) http://webgraphviz.com/ 도 훌륭합니다! :-)


1
이 프로젝트는 훌륭해 보였고 아마도 내가 본 것 중 최고의 솔루션 일 것입니다. 그러나 소스를 사용하는 방법을 알아 내기 위해서는 약간의 파고가 필요합니다. 코드는 꽤 합리적으로 보이므로 그렇게 나쁘지 않을 수 있습니다.
captncraig

지금까지 이것은 원래의 질문에서 내가 찾던 것에 가장 가깝습니다. 렌더러가 아니라 유 방향 그래프를 계산하는 방법도 알고 있습니다. 백엔드에서 DOT를 실행합니까, 아니면 전체 그래프 생성 알고리즘이 브라우저에서 실행됩니까?
Armentage

1
@Armentage, 브라우저에서 완전히 실행 중입니다. Graphviz는 emscripten 덕분에 JavaScript로 컴파일되었습니다 . 소스 코드는 문서화되어 있지는 않지만 운 좋게도 (Twitter와 전자 우편으로 저자를 잔소리 한 후) ;-) 여기에 있습니다 . 프로젝트를 시작하고 사용하기 쉬운 API를 만드는 것이 첫 번째 큰 단계입니다 ..!
Greg Sadetsky

5
Graph Dracula 라이브러리를 후보 목록에 추가하고 싶었습니다 . 여기서 데모를 볼 수 있습니다 . 그래프를 계산하고 표시합니다 ( Raphael 사용 ). 코드는 짧고 깨끗합니다.
Greg Sadetsky

Livizjs는 훌륭한 도구이지만 '클러스터'와 같은 전체 언어를 지원하지는 않습니다.
SirLenz0rlot

37

멀리 낮게 검색 한 후 마침내 답을 찾았습니다.

해결책은 누군가가 llvm + emscripten을 사용하여 Graphviz를 Javascript로 크로스 컴파일하는 것입니다. 여기 링크가 있습니다:

http://viz-js.com/

소스는 https://github.com/mdaines/viz.js 에서 찾을 수 있습니다.

그리고 단순히 웹 페이지를 사용하려면 :

var graphviz_text = ...;
document.body.innerHTML += Viz(graphviz_text, "svg");

이것은 내가 찾던 것이
기도

6
업데이트 : viz.js에 연결하는 것이 재미 있고 쉬운 방법을 보여주는 데모 사이트를 만들었습니다! www.webgraphviz.com에서 확인하십시오
Zachary Vorhies

제공된 github 링크가 깨졌습니다
Jaime



11

https://github.com/kripken/emscripten 의 'PDF 리더'예제에서와 같이 graphviz를 자바 스크립트로 변환 해 볼 수 있습니다.


이것은 엄청나게 큰 제안입니다. 코드를 JS로 직접 번역하려고 생각하고 있었지만이 llvm 트릭은 아름다운 광기입니다!
Armentage

나는 실제로 이것을 지금까지 두 번 시도했다.. emscripten은 여전히 ​​젊고 문서 적요 확실히 볼만한 훌륭한 프로젝트, 나는 그것이 어떻게 많은 힘을 줄 수 있는지 볼 수 있습니다. 그러나 지금 당신이 그것을 쓴 사람이 아니라면 그것은 다소 다루기 어렵습니다.
신디사이저

8

이것은 기성품 graphviz 대체품은 아니지만 d3.js 는 주어진 데이터에서 다양한 레이아웃을 수행 할 수있는 라이브러리이며 graphviz를 구현하기위한 훌륭한 플랫폼이 될 것입니다.

다음 은 강제 레이아웃의 예입니다. 은 graphviz가 수행하는 형식 중 하나 .

다음은 대단한 대화 형 슬라이드 가있는 레이아웃에 대한 연설 입니다.

프로젝트를 알기 위해서는 튜토리얼 이 매우 좋습니다.


1
github.com/cpettitt/dagre-d3 는 JavaScript에서 DOT 다이어그램을 구현합니다. cpettitt.github.io/project/dagre-d3/latest/demo/… 에서 데모를 재생할 수 있습니다 .
Arthur2e5

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.