graphvizpydot

Html Horizontal line error graphviz


I'm needing to create subgraph cluster have a label with line separation from nodes.

subgraph cluster_0{

   label=< <B>process #1</B> <HR/> >
    node [shape=none]
    t1 [label="label1"]
    t2 [label="label2"]
    t3 [label="label 3"]
    node [shape=box group=a style=filled fillcolor="red;.5:white" height=.2 label = "" ]
    A [ fillcolor="red;0.3:white" ]
    B [fillcolor="red;.9:white"]
    C
     node [shape=none  fillcolor=white]
    t11 [label="label1"]
    t21 [label="label2"]
    t31 [label="label 3"]

    edge[style=invis];
     A->B->C
     t1->t2->t3
     t11->t21->t31





 }

Then I get in error on


Syntax. error stack

pydot.InvocationException: Program terminated with status: 1. stderr follows: Error: syntax error in line 1 
...  <HR/> ...
in label of graph cluster_0

My graphviz version is dot - graphviz version 2.36.0 (20140111.2315)


Solution

  • On the graphviz web site, the page called "Node Shapes" contains a grammar (about half-way down) for html-like labels:

    For <HR/>, it says:

    rows : row
         | rows row
         | rows <HR/> row
    

    This means that <HR/> is only allowed in between two rows. And rows are only allowed within a <TABLE>, so you'll have to wrap everything in a table and then it may work.

    Depending on what exactly you'd like to achieve, an other possible solution might be to simply underline the label using <U>text</U>.