myborobudur
myborobudur

Reputation: 4435

Subgraphs horizontal and its nodes vertical aligned

I have problems to organize my subgraphs horizontal and the nodes inside the subgraphs vertical. All of them (subgraphs and nodes) are just on one line (horizontal or vertical).

digraph G {
  rankdir = LR;
  subgraph cluster_0 {
    rankdir = TB;
    node [style=filled];
    label = "Title 1";
    color=black
    N1 -> N2;
  }
  subgraph cluster_1 {
    rankdir = TB;
    node [style=filled];
    label = "Title 2";
    color=black
    N3 -> N4 -> N5;
  }
  subgraph cluster_2 {
    rankdir = TB;
    node [style=filled];
    ...
  }
  ...

  N2 -> N3;
  ...

  N1 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N2 [label = "W2", fillcolor="green", shape="octagon"]
  N3 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N4 [label = "W2", fillcolor="green", shape="octagon"]
  N5 [label = "W2_ERROR", fillcolor="red", shape="octagon"]
  N6 [label = "W3", fillcolor="green", shape="invtriangle"]
  ...
}

I also tried with {rank=same; N1; N3; ...;}. This take the nodes out of the subgraphs.

Upvotes: 3

Views: 5420

Answers (2)

stefan
stefan

Reputation: 3759

In your case I'd prefer top-to-bottom layout

digraph G {
  rankdir = TB;
  node [style=filled];
  subgraph cluster_0 {
    N1 N2
    label = "Title 1";
    edge [dir = back]
    N2 -> N1;
  }
  subgraph cluster_1 {
    N3 N4 N5
    label = "Title 2";
    edge [dir = back]
    N5 -> N4 -> N3;
  }
  subgraph cluster_2 {
    label = "Title 3";
    N6
  }
  N2 -> N3 [constraint=none];
  N5 -> N6 [constraint=none];
  N1 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N2 [label = "W2", fillcolor="green", shape="octagon"]
  N3 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N4 [label = "W2", fillcolor="green", shape="octagon"]
  N5 [label = "W2_ERROR", fillcolor="red", shape="octagon"]
  N6 [label = "W3", fillcolor="green", shape="invtriangle"]
}

enter image description here

Upvotes: 3

Ohad Eytan
Ohad Eytan

Reputation: 8464

You can use something like that:

digraph G {
  rankdir = LR;
  subgraph cluster_0 {
    {rank=same N1 N2}
    label = "Title 1";
    N1 -> N2;
  }
  subgraph cluster_1 {
    {rank=same N3 N4 N5}
    label = "Title 2";
    N3 -> N4 -> N5;
  }
  subgraph cluster_2 {
    node [style=filled];
    label = "Title 3";
    N6;
  }

  N2 -> N3;
  N5 -> N6;
  N1 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N2 [label = "W2", fillcolor="green", shape="octagon"]
  N3 [label = "BA_A", fillcolor="green", shape="Msquare"]
  N4 [label = "W2", fillcolor="green", shape="octagon"]
  N5 [label = "W2_ERROR", fillcolor="red", shape="octagon"]
  N6 [label = "W3", fillcolor="green", shape="invtriangle"]
}

output

Upvotes: 4

Related Questions