【问题标题】:How do I style the ports of record based nodes in GraphViz?如何在 GraphViz 中设置基于记录的节点端口的样式?
【发布时间】:2014-03-23 00:11:04
【问题描述】:

我将这个定义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 通过蓝色样条连接:

很好。

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

我如何做到这一点?


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

【问题讨论】:

标签: graphviz styling dot


【解决方案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="#"];
}

生成此图:

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

【讨论】:

  • 看起来很有希望。为什么 d2 的端口 0 比其他端口宽?还是我错了?
  • 你是对的。我将它渲染成 PDF 并将它炸毁,它比边框的宽度更宽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2022-10-18
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多