如何在GraphViz中设置基于记录的节点的端口样式?

eck*_*kes 5 dot styling graphviz

我喂这个简单的输入脚本定义基于记录节点,以便从它(SVG部分实际上并不重要)创建一个SVG来点:

graph mygraph{
  node [shape=record, fontsize=10, fontname=Arial];
  rankdir=TB;
  ranksep=0.5;
  rank=max;
  splines=true;
  overlap=false;
  mindist=0.2;
  "d1" [style=solid, label="{\N|{<0> 0|<1> 1}}"];
  "d2" [style=solid, label="{\N|{<0> 0|<1> 1|<2> 2|<3> 3}}"];
  "d1":0 -- "d2":0[color=blue, penwidth=3, tooltip="d1:0 -- d2:0", URL="#"];
}
Run Code Online (Sandbox Code Playgroud)

这将生成一个图表,其中端口0 d1和端口0 d2由蓝色样条线连接:

点结果

精细.

现在我需要着色端口.例如:端口1 d2应为绿色,端口2 d2应为橙色.或者其他的东西.

我该如何实现这一目标?


编辑1:节点周围的实心框架很重要.我需要它为某些节点固定,为其他节点破灭.

SSt*_*eve 7

类似HTML的标签为您格式化标签提供了很大的灵活性.这段代码:

graph mygraph{
  node [shape=record, fontsize=10, fontname=Arial];
  rankdir=TB;
  ranksep=0.5;
  rank=max;
  splines=true;
  overlap=false;
  mindist=0.2;
  d1 [shape=none, margin=0, label=<
    <table border="0" cellborder="1" cellspacing="0" cellpadding="4">
        <tr><td colspan="2">d1</td></tr>
        <tr><td port="0">0</td><td>1</td></tr>
    </table>>];
  d2 [shape=none, margin=0, label=<
    <table border="0" cellborder="1" cellspacing="0" cellpadding="4">
        <tr><td colspan="4">d2</td></tr>
        <tr><td port="0">0</td><td bgcolor="green">1</td><td bgcolor="orange">2</td><td>3</td></tr>
    </table>>];
  d1:0 -- d2:0[color=blue, penwidth=3, tooltip="d1:0 -- d2:0", URL="#"];
}
Run Code Online (Sandbox Code Playgroud)

生成此图表:

在此输入图像描述

请注意使用该port属性来标识端口.