在 Jupyter 中使用 Graphviz 设置节点位置 Python
Set node positions using Graphviz in Jupyter Python
我想制作一个具有随机节点位置的图表,但似乎节点的 "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)
关于如何实现的任何想法?
提前致谢。
虽然文档中不是 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 属性,您会得到类似(但不完全相同)的结果:
我想制作一个具有随机节点位置的图表,但似乎节点的 "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)
关于如何实现的任何想法? 提前致谢。
虽然文档中不是 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 属性,您会得到类似(但不完全相同)的结果: