2014-03-13 8 views
0

MediaViki 사이트에서 GraphViz를 사용하고 있습니다. 즉, svg 파일에서 작업 할 수 없습니다 (불행하게도). 나는이 그래프 내가 좋아하는 거의 무엇을 생산하지만, sixteen-> 오, ten-> 여섯 thirteen-> 십사 노드 사이의 슬라럼을 많이 만들어 링크GraphViz가 정기적 인 가장자리를 만듭니다.

digraph GPPubProcess{ 
rankdir="TB"; 
node [shape = box fontsize=10]; 
edge [fontsize=10]; 
graph[size="7.75,10.25" overlap = false]; 

subgraph c2 { 
    rank="same"; 
    N02 [label="Two?" shape=hexagon margin=0]; 
    N03 [label="Three"]; 
} 

subgraph c4 { 
    rank="same"; 
    N07 [label="Seven"]; 
    N06 [label="Six?" shape=hexagon margin=0]; 
    N05 [label="Five"]; 
} 

subgraph c8 { 
    rank="same"; 
    N11 [label="Eleven)" shape=hexagon margin=0]; 
    N12 [label="Twelve"]; 
} 

subgraph c9 { 
    rank="same"; 
    N13 [label="Thirteen?" shape=hexagon margin=0]]; 
    N14 [label="Fourteen"]; 
N17 [label="COMPLETED"]; 
} 

N00 [shape=point]; 
N01 [label="One"]; 
N02 [label="Two?" shape=hexagon margin=0]; 
N04 [label="Four?" shape=hexagon margin=0]; 
N08 [label="Eight"]; 
N09 [label="Nine"]; 
N10 [label="Ten?" shape=hexagon margin=0]; 
N99 [shape=point]; 
N00->N01:n; 
N01:s->N02:n; 
N02:s->N04:n [label=" yes"]; 
N04:s->N05:n [label=" no" weight=30]; 
N05:s->N08:n [weight=30]; 
N08:s->N09:n [weight=30]; 
N09:s->N10:n [weight=30]; 
N10:s->N11:n [label=" no" weight=30]; 
N11:s->N17:n [label=" no"]; 
N17:s->N99; 

N02 -> N03 [weight=0]; 
N04:e -> N06:n [label=" yes"]; 
N06 -> N05 [label=" no"] [weight=0]; 
N06 -> N07 [label=" yes"]; 
N10:e -> N06:s [label=" yes" weight=5]; 
N03:s -> N07:n; 
N07:e -> N09:e [weight=0]; 

N11:e -> N12:w; 

N15 [label="Fifteen"]; 
N16 [label="Sixteen"]; 

N12:s->N13:n [weight=5]; 
N13:s->N15:n [label=" no"]; 
N15:s->N16:n; 

N13:e->N14:w [label=" yes" weight=5]; 

N14:n->N07:s; 

N16:w->N05:w [weight=0]; 

} 

를 만들었습니다. 그들을 정규화하는 방법이 있습니까?

또한 6과 5 사이의 링크는 잘못된 방향으로 가고 있지만 제대로 만들 수 없었습니다. 어떤 트릭이 있습니까?

대단히 감사합니다.

조르지오 나는 weight와 나침반 포인트 지침을 제거하여 시작할 것

답변

0

(: N : E :들, : w). 그것들은 점들로 하여금 이상한 결정, 특히 나침반 점을 만들기를 강요합니다. 기본 버전을 변경해야하는 경우 한 번에 하나씩 변경하십시오. 불행히도, 점을 특정 그래프를 만들기 위해 더 많이 넣으려고하면할수록 그 경향은 더 약합니다.

SVG로 작업 할 수 없으므로 원하는 시점에 정확하게 그래프를 포기하고 점이 생성 한 그래프를 받아 들여야합니다. 얼마나 많이 당신이 점을 강요 할 수 있는지에 대한 한계가 있습니다.

6과 5 사이의 링크 (N06 -> N05)는 화살촉이 6에서 5 사이 여야합니다. 화살촉이 6 개를 가리키고있는 것을보고 있다면, 이전 버전의 Graphviz에서 버그라고 생각합니다. 최신 릴리스로 업데이트하십시오.

이 코드 :

no constraints

N06 -> N05-[constraint=false]은 N06 주변 교차로를 제거하는 데 도움이 추가,하지만 왼쪽에 떨어져 N11 및 N17 방법을 밀어 :

digraph GPPubProcess{ 
    rankdir="TB"; 
    node [shape = box fontsize=10]; 
    edge [fontsize=10]; 
    graph[size="7.75,10.25" overlap = false]; 

    subgraph c2 { 
     rank="same"; 
     N02 [label="Two?" shape=hexagon margin=0]; 
     N03 [label="Three"]; 
    } 

    subgraph c4 { 
     rank="same"; 
     N07 [label="Seven"]; 
     N06 [label="Six?" shape=hexagon margin=0]; 
     N05 [label="Five"]; 
    } 

    subgraph c8 { 
     rank="same"; 
     N11 [label="Eleven)" shape=hexagon margin=0]; 
     N12 [label="Twelve"]; 
    } 

    subgraph c9 { 
     rank="same"; 
     N13 [label="Thirteen?" shape=hexagon margin=0]; 
     N14 [label="Fourteen"]; 
     N17 [label="COMPLETED"]; 
    } 

    N00 [shape=point]; 
    N01 [label="One"]; 
    N02 [label="Two?" shape=hexagon margin=0]; 
    N04 [label="Four?" shape=hexagon margin=0]; 
    N08 [label="Eight"]; 
    N09 [label="Nine"]; 
    N10 [label="Ten?" shape=hexagon margin=0]; 
    N99 [shape=point]; 
    N00->N01; 
    N01->N02; 
    N02->N04 [label=" yes"]; 
    N04->N05 [label=" no"]; 
    N05->N08; 
    N08->N09; 
    N09->N10; 
    N10->N11 [label=" no"]; 
    N11->N17 [label=" no"]; 
    N17->N99; 

    N02 -> N03; 
    N04 -> N06 [label=" yes"]; 
    N06 -> N05 [label=" no"]; 
    N06 -> N07 [label=" yes"]; 
    N10 -> N06 [label=" yes"]; 
    N03 -> N07; 
    N07 -> N09; 

    N11 -> N12; 

    N15 [label="Fifteen"]; 
    N16 [label="Sixteen"]; 

    N12->N13; 
    N13->N15 [label=" no"]; 
    N15->N16; 

    N13->N14 [label=" yes"]; 
    N14->N07; 

    N16->N05; 

} 

이 그래프를 생성

with constraint

+0

감사합니다, 스티브,이게 많은 도움이되었습니다! 왼쪽과 같이 페이지의 한면에 더 많은 무게를 줄 수있는 방법이 있습니까? 상자가 그면에 정렬되도록하십시오. – GIMBorgo

+0

내가 아는 방법은 없지만 나는 아직도 GraphViz 초심자이다. – SSteve

+0

@GIMBorgo 이것은 UML 활동 다이어그램처럼 보입니다. GraphViz 위에 실행되는 PlantUML이 있으며 그러한 다이어그램을 지원합니다 : http://plantuml.com/activity2.html#simple MediaWiki : https : //www.mediawiki에서 작동하도록 할 수도 있습니다. org/wiki/Extension : PlantUML – Fuhrmanator

관련 문제