我制作了一个 python 脚本来使用 graphviz 绘制目录结构。为了正确渲染图表,我使用rankdir=LR。然而,具有相同等级的节点居中。
请参见下图。
如您所见,“.gitignore”、“.travis.yml”等节点由于其标签而没有相同的宽度。我希望相同等级的节点在左侧对齐,无论其宽度如何。
我看过其他类似的相关帖子,但我不想强制节点宽度。
还有其他方法吗?
预先感谢您的回答并祝您有美好的一天。
PS:这是我的图形代码示例:
strict digraph projetcStructure {
graph [overlap=false, splines=ortho, ranksep=0.05]
edge[arrowhead=none, color=black]
node[fontname="DejaVu Sans Mono", fontsize=14]
"e0ec0f89f0745e25b725768b304be71e" [shape=folder, style=filled, colorscheme=ylgnbu3, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/file-directory.png" SCALE="TRUE"/></TD><TD>TechnicalReport</TD></TR></TABLE>>, color=2]
"77a7da2a6f864418dd23f49f9c5e9804" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/git-merge.png" SCALE="TRUE"/></TD><TD>.gitignore</TD></TR></TABLE>>, color=1]
"373d5e485b88f76e79d5bab15a88759e" [shape="point", width=0, height=0]
"8e58ce33bdaaa1db79bab7080019c6fe" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/travis.png" SCALE="TRUE"/></TD><TD>.travis.yml</TD></TR></TABLE>>, color=1]
"b56aa426f8ad0d8a7704c909f2473b70" [shape="point", width=0, height=0]
"98a5f187b3527ca7f00643e7907b3453" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/book.png" …
Run Code Online (Sandbox Code Playgroud) 下图显示了组织结构图:
这些Full Name
盒子沿着它们的中心对齐。然而,所需的布局是将框沿顶部对齐:
该图的代码如下:
digraph G {
fixedwidth = true;
node [
shape="box",
style="rounded",
penwidth = 1,
width=2.0,
fontname = "Arial",
fontsize = 12
];
edge [
color="#142b30",
arrowhead="vee",
arrowsize=0.75,
penwidth = 2,
weight=1.0
];
A1 [ label = <
<TABLE BORDER="0" CELLSPACING="5">
<TR>
<TD><FONT POINT-SIZE="16">Top Level</FONT></TD>
</TR>
<TR>
<TD><FONT POINT-SIZE="18">Owner</FONT></TD>
</TR>
</TABLE>>
];
B3 [ label = <
<TABLE BORDER="0" CELLSPACING="5">
<TR>
<TD><FONT POINT-SIZE="12">Second Level<BR/>(1)</FONT></TD>
</TR>
<TR>
<TD><FONT POINT-SIZE="14">Owner</FONT></TD>
</TR>
</TABLE>>
];
B4 [ label …
Run Code Online (Sandbox Code Playgroud) 我希望第二列(C和E)中的节点左对齐,而不是居中.
digraph left {
graph [rankdir="LR", splines=ortho];
node [shape=record];
l1 [label="A\l|B\l"];
l2 [label="C\l|short\l"];
l3 [label="E\l|long long text\l"];
l1 -> l2;
l1 -> l3;
}
Run Code Online (Sandbox Code Playgroud)
我见过这个问题.
但是建议的节点使用恒定宽度的方法并不适合我.我希望它们具有不同的宽度,具体取决于相应的标签宽度.