15

I am very new to Dot and trying to visualize a callgraph with Dot and Zest in Eclipse. And I would like to annotate nodes with kind of annotation (OK and Failed on the pic.).

Annotated graph I want to get

Is there any common way to do this for Dot or Zest?

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
Andrey Solovyov
  • 551
  • 7
  • 21

2 Answers2

15

xlabel

Have a look at xlabel (external label).

main.dot

graph {
    node [shape=square];
    1 [xlabel="a"]
    2 [xlabel="b"]
    1 -- 2;
}

Convert:

dot -Tpng main.dot > main.png

Output:

enter image description here

Not sure however how easily you can control exact label placement with this method: even overlaps can happen by default. See:

shape=record

I just tend to prefer the shape=record approach mentioned by https://stackoverflow.com/a/23031506/895245 or their generalization, HTML-like labels, as it makes it clearer what label belongs to each node:

graph {
    rankdir=LR
    node [shape=record];
    1 [label="1|a"]
    2 [label="2|b"]
    1 -- 2;
}

Output:

enter image description here

TODO can you avoid typing 1 and 2 twice?

Tested on Ubuntu 16.10, graphviz 2.38.

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
1

It's not supported by the Zest rendering, but on the DOT level you could use record-based nodes:

rankdir=LR;
node [shape=record];
m1[label="void m1()|OK"];
m1[label="void m2()|Failed"];

For details see http://www.graphviz.org/doc/info/shapes.html#record

Fabian Steeg
  • 44,988
  • 7
  • 85
  • 112