通过 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/) 好消息:<BR ALIGN="LEFT"/>
是合法的。
所以:
graph
node [shape=Mrecord]
MyNode [label=<Topic|<b>SubHeader</b>|field1: int<BR ALIGN="LEFT"/>fields: dict<BR ALIGN="LEFT"/>>]
制作人:
附言<P>
不是合法的 Graphviz 语法。请参阅https://graphviz.org/doc/info/shapes.html(Graphviz 使用 HTML-like 语法。强调 -like)
pps考虑使用实际的类似 HTML 的记录。他们提供更多控制权。
【讨论】:
• 对不起,会的。 • Graphiv 新手,只是摆弄直到它起作用:-) • 这也是我的印象。 • 是的!太棒了 - 谢谢! 你有“实际的类似 HTML 的记录”的好例子吗?我发现上面的方法是零星的,不可靠的。以上是关于通过 Python 中的 HTML 格式在 Graphviz 节点中左对齐的主要内容,如果未能解决你的问题,请参考以下文章
Python:通过pywin32模块批量将rtf或docx另存为doc格式