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

如何在GraphViz中设置基于记录节点的端口的样式?,graphviz,styling,dot,Graphviz,Styling,Dot,我将这个简单的输入脚本输入到dot,以便从中创建SVG(SVG部分实际上并不重要): graph-mygraph{ 节点[shape=record,fontsize=10,fontname=Arial]; rankdir=TB; ranksep=0.5; 秩=最大值; 样条曲线=真; 重叠=假; 明德主义=0.2; “d1”[style=solid,label=“{\N |{0 | 1}}]”; “d2”[style=solid,label=“{\N |{0 | 1 | 2 | 3}}”; “d

我将这个简单的输入脚本输入到dot,以便从中创建SVG(SVG部分实际上并不重要):

graph-mygraph{
节点[shape=record,fontsize=10,fontname=Arial];
rankdir=TB;
ranksep=0.5;
秩=最大值;
样条曲线=真;
重叠=假;
明德主义=0.2;
“d1”[style=solid,label=“{\N |{0 | 1}}]”;
“d2”[style=solid,label=“{\N |{0 | 1 | 2 | 3}}”;
“d1”:0--“d2”:0[颜色=蓝色,笔宽=3,工具提示=“d1:0--d2:0”,URL=“#”];
}
这将生成一个图形,其中
d1
的端口0和
d2
的端口0通过蓝色样条线连接:

好的

现在我需要为端口上色。例如:
d2
的端口1应为绿色,
d2
的端口2应为橙色。或者别的什么

我如何做到这一点


编辑1:节点周围的实心框架很重要。对于某些节点,我需要它为实心,对于其他节点,需要它为虚线。

为您设置标签格式提供了很大的灵活性。此代码:

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="#"];
}
graph-mygraph{
节点[shape=record,fontsize=10,fontname=Arial];
rankdir=TB;
ranksep=0.5;
秩=最大值;
样条曲线=真;
重叠=假;
明德主义=0.2;
d1[形状=无,边距=0,标签=<
d1
01
>];
d2[形状=无,边距=0,标签=<
d2
0123
>];
d1:0--d2:0[color=blue,penwidth=3,tooltip=“d1:0--d2:0”,URL=“#”];
}
生成此图形:


请注意使用
端口
属性来标识端口。

看起来很有希望。为什么d2的端口0比其他端口宽?还是我错了?你是对的。我以PDF格式渲染并放大了它,它比边框宽。可能是
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="#"];
}