Graphviz 节点中的左对齐通过 HTML 在 Python 中格式化

Left Justifications in Graphviz Nodes via HTML Formatting in Python

我正在使用 the Python graphviz library,我的节点格式为 HTML。

我的 python 代码生成了这个节点:
MyNode [label=<{Topic|<b>SubHeader</b>|field1: int<BR/>fields: dict<BR/>}>]

我想左对齐最后一个(字段)部分的文本。

如何只为最后一节添加对齐说明?

Graphviz 支持添加 \l 作为理由转义码,但它似乎不适用于 HTML 格式的节点。
同样,我不知道如何将 <p> 标记添加到 HTML 代码。

  • 您未能证明您已将节点形状设置为 Mrecord。没有这些信息很难理解你在做什么。下次请包括完整的点程序。
  • 哇,你在混合记录形状和 HTML 文本。我很惊讶这甚至是合法的。好像是,太爽了!
  • \l, \r, \c 在 HTML 文本中似乎不合法 (https://graphviz.org/docs/attr-types/lblString/)
  • 好消息:<BR ALIGN="LEFT"/> 是合法的。 所以:
graph {
  node [shape=Mrecord]
  MyNode [label=<{Topic|<b>SubHeader</b>|field1: int<BR ALIGN="LEFT"/>fields: dict<BR ALIGN="LEFT"/>}>]
}

产生:

p.s。 <P> 不是合法的 Graphviz 语法。参见 https://graphviz.org/doc/info/shapes.html(Graphviz 使用 HTML-like 语法。强调 -like
p.p.s。考虑使用实际的 HTML 类记录。他们提供更多控制权。

3 个版本,2 个使用 html 类记录:

graph {
  node [shape=Mrecord]
  MyNode [label=<{Topic|<b>SubHeader</b>|field1: int<BR ALIGN="LEFT"/>fields: dict<BR ALIGN="LEFT"/>}>]

  node [shape=plaintext]
  MyNodeA [label=<<table style="rounded">
       <tr><td border="0">Topic</td></tr>
       <hr/>
       <tr><td border="0"><b>SubHeader</b></td></tr>
       <hr/>
       <tr><td border="0" align="left">field1: int</td></tr>
       <tr><td border="0" align="left">fields: dict</td></tr>       
       </table>>]

  MyNodeB [label=<<table style="rounded">
       <tr><td border="0">Topic</td></tr>
       <hr/>
       <tr><td border="0"><b>SubHeader</b></td></tr>
       <hr/>
       <tr><td border="0" align="left" balign="left">field1: int<br/>fields: dict</td></tr>       
       </table>>]
}

给予: