3

我正在尝试布局一些图表,我正在使用pygraphviz它。我建立我的图表,并执行

graph.layout(prog='dot')

当我执行print graph时,它会吐出 DOT 格式的表示,如下所示:

...
94   [height="0.5", pos="1485,18", width="0.75"];
93 -> 94     [pos="e,1485,36.104 1485,71.697 1485,63.983 1485,54.712 1485,46.112"];
98   [height="0.5", pos="1557,18", width="0.75"];
97 -> 98     [pos="e,1557,36.104 1557,71.697 1557,63.983 1557,54.712 1557,46.112"];
...

pos对于每个节点,属性的含义非常清楚。但这对边缘意味着什么?我相信它可能以某种方式引用三次样条表示,但是如果我想在 matplotlib 中手动绘制边缘,我将如何使用这些点?

谢谢!乌里

4

2 回答 2

0

这个文件:

# edge.dot

digraph G {

  A [label = "A"  xlabel="a" pos="0,100" ]
  B [label = "B"  xlabel="b" pos="100,0"]

  A -> B  [label = "A->B www"  xlabel="a->b"]   
 [pos="0,100 0,0 0,0 100,0"]
  

}

使用neato 运行时绘制曲线边缘:

dot -Kneato -n2 -Tpng -O ./edge.dot 

编辑: e 代表结束,s 代表箭头位置的开始。以下几点定义了贝塞尔曲线(或者如果不是技术上非常相似的贝塞尔曲线。)


pos="s,15.188,84.812 e,84.997,15.003 22.335,77.665 38.894,61.106 61.363,38.637 77.873,22.127"

https://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node12.html#:~:text=A%20B%C3%A9zier%20curve%20is%20a,the%20shape%20of%20the%20curve .

于 2021-10-08T04:56:19.670 回答
-4

答案在这里: http ://www.graphviz.org/doc/info/attrs.html#k:splineType

于 2012-08-01T22:33:34.420 回答