DOT 그래프에서 클러스터를 이동하고 불필요하게 교차하는 선을 방지하는 방법은 무엇입니까?

Golly

이 다이어그램을 생성하기 위해 Graphviz를 사용하고 있습니다. 내가 얻는 것

출력이 최적이 아닙니다. XZ 라인은 불필요하게 XY 라인을 교차합니다. Y가 X보다 높을 것으로 예상합니다. doco에서 많은 옵션을 시도했지만 아무 소용이 없습니다. 이것은 내가 기대하는 출력의 종류입니다.내가 원하는 것

Graphviz에서 더 나은 최적화 된 다이어그램을 생성하려면 어떻게해야합니까?

참고 : 위의 시나리오에 특정한 솔루션 (예 : X0-> Y1, Y11-> X03 등의 보이지 않는 가장자리)이 도움이되지 않도록 유사한 다이어그램 생성을 자동화하고 싶습니다. 일반적으로 다음과 같은 것을 신뢰할 수있는 방법을 찾고 있습니다.

  • AXB는 직선이됩니다.
  • Z와 상호 작용하지 않으면 Y는 AXB보다 높습니다.
  • X-> Y-> X는 불필요하게 X 노드 사이에 큰 간격을 발생시키지 않습니다.

도트 파일 내용은 다음과 같습니다.

digraph G {
  rankdir=LR

  subgraph cluster_x {
    node [style=filled,color=green]
    "X.0" -> "X.0.1" -> "X.0.2" -> "X.0.3" -> "X.0.4"
  }

  subgraph cluster_y {
    node [style=filled,color=lightblue]
    "Y.1" -> "Y.1.1"
  }

  subgraph cluster_z {
    node [style=filled,color=crimson]
    "Z.1" -> "Z.1.1"
    "Z.2"
  }

  A -> "X.0"
  "X.0.1" -> "Y.1"
  "X.0.1" -> "Z.2"
  "X.0.2" -> "Z.1"
  "Y.1.1" -> "X.0.2"
  "Z.1.1" -> "X.0.4"
  "Z.2" -> "Z.1.1"
  "X.0.4" -> B
}
graphviz에서 북쪽

사소하지 않습니다. 우리는 레이아웃 알고리즘을 지원하는 자원 봉사자들에게 열려 있습니다. Emden Gansner와 저는 점의 완전한 정밀 검사 (서브 그래프 및 긴 모서리에 대한 더 깨끗한 데이터 구조와 mincross에 대해 선별 사용)에 큰 시작을했지만 완료하지 않았습니다. 우리는 Emden이 이전 도트 레이아웃 엔진을 백 해킹했다고 생각하는 새로운 레벨 할당 cpde를 작성했습니다. 누군가 그것을 집어 들고 더 나아가고 싶다면 아마도 몇 달의 노력 일 것입니다. graphviz.org로 문의

일반적으로 제약 기계 (점과 같은)는 약간 부서지기 쉽습니다. 스스로 올바른 솔루션을 얻거나 약간의 조정을 추가 할 수 있지만 입력이 조금이라도 변경 되 자마자 조정으로 모든 것이 깨져서 좋지 않습니다. 레이아웃 패스의 직렬 특성 때문에 예를 들어 나중에 교차점을 줄이기 위해 다른 레벨 할당을 선호하는 것은 어렵습니다. 누군가가 그것을 찾아서 구현하고 싶다면 Graph Drawing 컨퍼런스에서 약간의 작업이있을 수 있습니다.

스티븐 노스

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관