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

标签 graphviz styling dot

我正在提供这个定义 record based nodes 的简单输入脚本为了从中创建一个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="#"];
}

这产生了一个图表,其中 d1 的端口 0和 d2 的端口 0由蓝色样条连接:

dot result

美好的。

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

我如何实现这一目标?

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

最佳答案

HTML-like labels在格式化标签方面为您提供了很大的灵活性。这段代码:

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="#"];
}

生成此图:

enter image description here

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

关于graphviz - 如何在 GraphViz 中为基于记录的节点的端口设置样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935109/

相关文章:

gcc - 如何将 gcc 生成的抽象语法树转储到 .dot 文件中?

html - 标签和标签样式不适用于我的表单。

intellij-idea - 更改 IntelliJ 面包屑样式

graphviz - dot/Graphviz 更紧凑的层次布局

orientation - Graphviz:控制节点在子图中对齐

graphviz - 如何删除点语言中的文本(graphviz)

html - <a> 按钮的位置不固定其位置

Graphviz子图顺序

graphviz - 如何使用 GraphViz 点制作斜体节点标签?