GraphViz - How to have a subgraph be left-to-right when main graph is top-to-bottom?

Rory picture Rory · Oct 12, 2009 · Viewed 26.2k times · Source

I have a graph file like this:

digraph {
    "Step1" -> "Step2" -> "Step3";

    subgraph step2detail {
        "Step2" -> "note1";
        "Step2" -> "note2";
        "Step2" -> "note3";
        "Step2" -> "note4";
        rankdir=TB
   }
}

I want the subgraph step2detail to hang off to the right of 'Step2'.

Right now it looks like this:

enter image description here

I want Step1, Step2 and Step3 to all be vertically under each other and in 1 column.

Answer

irgeek picture irgeek · Aug 31, 2010

The trick to get the graph you described is to use two subgraphs and link from one to the other. The invisible edges in "details" are what keep the notes aligned.

digraph {
    rankdir="LR";

    subgraph steps {
        rank="same";
        "Step1" -> "Step2" -> "Step3";
    }

    subgraph details {
        rank="same";
        edge[style="invisible",dir="none"];
        "note1" -> "note2" -> "note3" -> "note4";
    }

    "Step2" -> "note1";
    "Step2" -> "note2";
    "Step2" -> "note3";
    "Step2" -> "note4";
}

The result is:

enter image description here