2

我无法让 GraphViz 尊重某些节点位置,即使它们pos具有!. 例如:

digraph Versions {
  ranksep=0.05;
  node [style=filled, shape=point, fillcolor=black, fixedsize=true, width=0.3, height=0.1, fontname="Helvetica", fontsize=8, fontcolor=white];
  edge [arrowhead=none, len=0.1];
  2 [pos="0,0!", fillcolor=red];
  3 [pos="20,0!", fillcolor=red];
  4 [pos="40,0!", fillcolor=red];
  5 [pos="60,0!", fillcolor=red];
  6 [pos="80,0!", fillcolor=red];
  7 [pos="100,0!", fillcolor=red];
  8 [pos="120,0!", fillcolor=red];
  9 [pos="140,0!", fillcolor=red];
  10 [pos="160,0!", fillcolor=red];
  11 [pos="180,0!", fillcolor=red];
  12 [pos="200,0!", fillcolor=red];
  13 [pos="220,0!", fillcolor=red];
  2 -> 14;
  14 -> 15;
  3 -> 16;
  16 -> 17;
  11 -> 18;
  18 -> 19;
  6 -> 20;
  20 -> 21;
  10 -> 22;
  22 -> 23;
  13 -> 24;
  24 -> 25;
  9 -> 26;
  26 -> 27;
  4 -> 28;
  28 -> 29;
  7 -> 30;
  30 -> 31;
  5 -> 32;
  32 -> 33;
  8 -> 34;
  34 -> 35;
  12 -> 36;
  36 -> 37;
  15 -> 38;
  38 -> 39;
  17 -> 40;
  40 -> 41;
  19 -> 42;
  42 -> 43;
  // etc.
}

最高排名应该平均分配,但不是。最顶部节点之间的水平间距不一样:

在此处输入图像描述

4

1 回答 1

3

pos属性的文档中:

在neato和fdp中,可以使用pos来设置节点的初始位置。

您使用的是neto还是fdp因为dot不尊重这个属性。


假设您使用的是neato,这里是手册的摘录:

-n[1|2] (no-op) 如果设置,neato 假定节点已经被定位并且所有节点都有一个 pos 属性给出位置

这意味着您可以使用

neato -n2 -Tpng mygraph.gv -o mygraph.png

并且有neato尊重节点的pos属性(以点为单位)。

这也表明所有节点都必须具有 pos 属性。

由于图形的某些节点没有 pos 属性,这将导致错误。

于 2013-10-17T19:15:05.133 回答