Search code examples
eclipsegraphvizdotzest

How to add an annotation outside of a node in Graphviz' dot?


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?


Solution

  • 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.