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

Posted

技术标签:

【中文标题】通过 Python 中的 HTML 格式在 Graphviz 节点中左对齐【英文标题】:Left Justifications in Graphviz Nodes via HTML Formatting in Python 【发布时间】:2022-01-01 22:01:13 【问题描述】:

我使用的是the Python graphviz library,并且我的节点是用 html 格式化的。

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

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

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

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

【问题讨论】:

【参考方案1】:

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>>]

捐赠:

【讨论】:

太棒了!我无法将两个答案都标记为已接受。【参考方案2】: 您未能证明已将节点形状设置为 Mrecord。没有这些信息很难理解你在做什么。下一次,请附上整个 dot 程序。 哇,您正在混合记录形状和 HTML 文本。我很惊讶这甚至是合法的。好像,太酷了! \l、\r、\c 在 HTML 文本中似乎不合法 (https://graphviz.org/docs/attr-types/lblString/) 好消息:&lt;BR ALIGN="LEFT"/&gt; 是合法的。 所以:
graph 
  node [shape=Mrecord]
  MyNode [label=<Topic|<b>SubHeader</b>|field1: int<BR ALIGN="LEFT"/>fields: dict<BR ALIGN="LEFT"/>>]

制作人:

附言&lt;P&gt; 不是合法的 Graphviz 语法。请参阅https://graphviz.org/doc/info/shapes.html(Graphviz 使用 HTML-like 语法。强调 -like) pps考虑使用实际的类似 HTML 的记录。他们提供更多控制权。

【讨论】:

• 对不起,会的。 • Graphiv 新手,只是摆弄直到它起作用:-) • 这也是我的印象。 • 是的!太棒了 - 谢谢! 你有“实际的类似 HTML 的记录”的好例子吗?我发现上面的方法是零星的,不可靠的。

以上是关于通过 Python 中的 HTML 格式在 Graphviz 节点中左对齐的主要内容,如果未能解决你的问题,请参考以下文章

Python:通过pywin32模块批量将rtf或docx另存为doc格式

如何通过匹配字符串在Python中提取父html标签

在 python 中的海龟中使用列表

python smtp 通过MIMEText类 发送HTML格式的邮件

python的IO

Python-docx和保留格式