4 Stimmen

Aneinanderreihen mehrerer kurzer Knoten parallel zu einem einzelnen hohen Knoten in GraphViz

Ich möchte so etwas erstellen - die Ausrichtung der Knoten ist das Wichtigste, nicht der Winkel der Kanten:

+--------------+
|              |
+--------------+
   |        |
   V        V
+-----+  +-----+  <--- alignment at top
|     |  |     |
|     |->|     |
|     |  |     |
+-----+  |     |
   |     |     |
   V     |     |
+-----+  |     |
|     |  |     |
|     |->|     |
|     |  |     |
+-----+  +-----+  <--- alignment at bottom
   |        |
   V        V
+--------------+
|              |
+--------------+

Das Beste, was mir eingefallen ist, ist, die beiden linken Knoten in einen Cluster-Subgraphen mit einem weißen (=> unsichtbaren) Rand zu stecken und das Gewicht einer der Kanten auf 0 zu setzen. Aber das ist immer noch nicht ganz richtig:

digraph G {

    // scale things down for example
    size="5,5" 
    rankdir=TD
    ranksep=1
    nodesep=1

    node [shape=box]

    node [width=5 height=2]
    top

    subgraph cluster_left
    {
        color=white
        node [width=2 height=2]
        left1
        left2
    }

    node [width=2 height=5]
    right

    node [width=5 height=2]
    bottom

    top->left1
    top->right

    left1->left2
    left1->right
    left2->right [weight=0]

    left2->bottom
    right->bottom
}

Das sieht dann so aus - schlecht ausgerichtet:

Haben Sie eine Idee, wie ich das bekommen kann, was ich will?

5voto

greg Punkte 834

Ich habe es mit neato und diesem Skript gemacht:

digraph G {
  layout="neato"
  // scale things down for example
  size="5,5" 
  rankdir=TD
  ranksep=1
  nodesep=1

  node [shape=box]

  top[pos="5,10!", width=5, height=2]

  left1[pos="3.5,7!", width=2, height=2]
  left2[pos="3.5,4!", width=2, height=2]

  right[pos="6.5,5.5!", width=2, height=5]

  bottom[pos="5,1!", width=5, height=2]

  top->left1
  top->right

  left1->left2
  left1->right
  left2->right

  left2->bottom
  right->bottom
}

Hier ist das Ergebnis:

alt text

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X