Graphviz笔记

Posted by [Kohn] on Tuesday, May 9, 2023 本文阅读量

1 constraint

有这样的需求, 整体是LR顺序的, 但是中间某些图需要TB顺序. 但是graphviz的 subgraph不支持rankdir属性, 这就导致图里的所有结点只要用边连起来, 就一定是LR顺序. 这时候可以将edge的属性设置为constraint=false, 忽略这个rankdir属性.

https://graphviz.org/doc/info/attrs.html#d:constraint

预期效果

a---b---d---e
    |
    c

实际效果

a---b---d---e
    |---c

2 丰富结点样式

结点可以通过html语法显示丰富的效果例如

node [
  label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
                        <tr> <td> <b>System</b> </td> </tr>
                        <tr> <td>
                                <table border="0" cellborder="0" cellspacing="0" >
                                        <tr> <td align="left" >+ property</td> </tr>
                                        <tr> <td port="ss1" align="left" >- Subsystem 1</td> </tr>
                                        <tr> <td port="ss2" align="left" >- Subsystem 2</td> </tr>
                                        <tr> <td port="ss3" align="left" >- Subsystem 3</td> </tr>
                                        <tr> <td align="left">...</td> </tr>
                                </table>
                        </td> </tr>
                        <tr> <td align="left">+ method<br/>...<br align="left"/></td> </tr>
                </table>>
]