我想制作一个具有随机节点位置的图,但是似乎节点的“ pos”属性什么也没做。这是一个最小的示例:
import graphviz
import pylab
from graphviz import Digraph
g = Digraph('G', filename='ex.gv',format='pdf')
g.attr(size='7')
g.node('1',pos='1,2')
g.node('2',pos='2,3')
g.node('3',pos='0,0')
g.edge('1','2')
g.edge('1','3')
graphviz.Source(g)
关于如何实现这一目标的任何想法? 预先感谢。
答案 0 :(得分:0)
尽管在文档中不是100%清晰,但我认为输入引擎中不支持 pos 。 fdp 或 neato 引擎在输入上支持 pos 来设置 initial 位置,如果结束坐标指定为'!',坐标将不会更改,因此将成为最终节点位置。
在https://beta.observablehq.com/@magjac/placing-graphviz-nodes-in-fixed-positions上播放现场示例
此独立的python脚本生成带有预期节点位置的pdf:
#!/usr/bin/python
import graphviz
from graphviz import Digraph
g = Digraph('G', engine="neato", filename='ex.gv',format='pdf')
g.attr(size='7')
g.node('1',pos='1,2!')
g.node('2',pos='2,3!')
g.node('3',pos='0,0!')
g.edge('1','2')
g.edge('1','3')
g.render()
由于SO不支持pdf上传,因此这是用相同的代码生成的png图片,但format ='png'除外:
没有感叹号,您将得到:
完全没有任何pos属性,您会得到相似(但不完全相同)的结果: