graphviz html table 节点居中而不是同等级
graphviz html table nodes centered instead of same rank
在此示例图中,我希望两个节点(源中的 A 和 B)从相同的 y 位置开始。特别是,我希望蓝色 header 和红色 header 处于同一等级或 y 位置——理想情况下尽可能靠近图像框的顶部,而不是它目前引发的所有行为。
换句话说,我希望红色 header 正好位于蓝色 header 所在的位置,就其 y 位置而言,但就目前而言,它似乎是所有新节点使用 html 标签相对于最大的 html 标签节点居中显示。
这里用另一张图来说明我的意思:
理想情况下,随着添加更多具有相似 html 标签结构的节点,它们从左向右移动,并从与所有其他节点相同的 y 位置开始 nodes/headers。
不幸的是,我尝试了 rank
的多种变体,但我似乎无法使用排名(或其他任何方式)来做到这一点。
记录不是可接受的解决方案;在我生成的图表中,行数非常大,并且行数 > 400 的记录似乎无法为我生成并出现解析错误。
请提供一个解决方案,该解决方案生成与良好图形示例图像(第 2 张图像)非常相似的内容,类似于以下 graphviz 源(用于使用 dot -O -Tpng <filename.gv>
生成不良图像):
digraph example {
node [shape=plaintext]
rankdir=TB
A [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR>
<TD BGCOLOR="lightblue">HEADER</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
</TABLE>
>];
B [
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR PORT="header">
<TD BGCOLOR="#d23939" COLSPAN="2">HEADER</TD>
</TR>
<TR>
<TD BGCOLOR="#ff6363">ONE</TD><TD BGCOLOR="#ff6363">TWO</TD>
</TR>
<TR>
<TD PORT="1">1</TD><TD>2</TD>
</TR>
<TR>
<TD PORT="3">3</TD><TD>4</TD>
</TR>
</TABLE>
>];
}
这是rankdir=LR
的典型例子。辅助节点和边不可见
digraph example {
rankdir=LR
node [shape=plaintext]
0, 1, 2, 3 [style=invis]
0->1->2->3 [style=invis]
{ rank=same; 0->A [style=invis]}
{ rank=same; 1->B [style=invis]}
A [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR>
<TD BGCOLOR="lightblue">HEADER</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
</TABLE>
>];
B [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR PORT="header">
<TD BGCOLOR="#d23939" COLSPAN="2">HEADER</TD>
</TR>
<TR>
<TD BGCOLOR="#ff6363">ONE</TD><TD BGCOLOR="#ff6363">TWO</TD>
</TR>
<TR>
<TD PORT="1">1</TD><TD>2</TD>
</TR>
<TR>
<TD PORT="3">3</TD><TD>4</TD>
</TR>
</TABLE>
>];
}
在此示例图中,我希望两个节点(源中的 A 和 B)从相同的 y 位置开始。特别是,我希望蓝色 header 和红色 header 处于同一等级或 y 位置——理想情况下尽可能靠近图像框的顶部,而不是它目前引发的所有行为。
换句话说,我希望红色 header 正好位于蓝色 header 所在的位置,就其 y 位置而言,但就目前而言,它似乎是所有新节点使用 html 标签相对于最大的 html 标签节点居中显示。
这里用另一张图来说明我的意思:
理想情况下,随着添加更多具有相似 html 标签结构的节点,它们从左向右移动,并从与所有其他节点相同的 y 位置开始 nodes/headers。
不幸的是,我尝试了 rank
的多种变体,但我似乎无法使用排名(或其他任何方式)来做到这一点。
记录不是可接受的解决方案;在我生成的图表中,行数非常大,并且行数 > 400 的记录似乎无法为我生成并出现解析错误。
请提供一个解决方案,该解决方案生成与良好图形示例图像(第 2 张图像)非常相似的内容,类似于以下 graphviz 源(用于使用 dot -O -Tpng <filename.gv>
生成不良图像):
digraph example {
node [shape=plaintext]
rankdir=TB
A [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR>
<TD BGCOLOR="lightblue">HEADER</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
</TABLE>
>];
B [
label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR PORT="header">
<TD BGCOLOR="#d23939" COLSPAN="2">HEADER</TD>
</TR>
<TR>
<TD BGCOLOR="#ff6363">ONE</TD><TD BGCOLOR="#ff6363">TWO</TD>
</TR>
<TR>
<TD PORT="1">1</TD><TD>2</TD>
</TR>
<TR>
<TD PORT="3">3</TD><TD>4</TD>
</TR>
</TABLE>
>];
}
这是rankdir=LR
的典型例子。辅助节点和边不可见
digraph example {
rankdir=LR
node [shape=plaintext]
0, 1, 2, 3 [style=invis]
0->1->2->3 [style=invis]
{ rank=same; 0->A [style=invis]}
{ rank=same; 1->B [style=invis]}
A [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR>
<TD BGCOLOR="lightblue">HEADER</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
<TR>
<TD ALIGN="LEFT">TEST</TD>
</TR>
</TABLE>
>];
B [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR PORT="header">
<TD BGCOLOR="#d23939" COLSPAN="2">HEADER</TD>
</TR>
<TR>
<TD BGCOLOR="#ff6363">ONE</TD><TD BGCOLOR="#ff6363">TWO</TD>
</TR>
<TR>
<TD PORT="1">1</TD><TD>2</TD>
</TR>
<TR>
<TD PORT="3">3</TD><TD>4</TD>
</TR>
</TABLE>
>];
}