我使用graphviz在python中绘制图形。我得到的图片几乎就像我想要的那样,但有一个例外:(某些)节点的位置不像我喜欢的那样。这是我的例子:
import graphviz as gv
A=[[1],[2,3,5,7],[4,6,9,10],[8]]
G=gv.Digraph(format='png',filename='Test')
for k in range(len(A)-1):
for l in A[k]:
G.node(str(l))
for m in A[k+1]:
if m%l==0:
G.edge(str(l),str(m))
G.view()
这就是结果:
我的问题是我希望相同等级的节点按幅度排序,以便" 2"是排名1的最左边的节点(从排名0开始)," 4"是等级2的最左边的节点,等等。
感谢您的回答!
马丁
答案 0 :(得分:2)
A=[[1],[2,3,5,7],[4,6,9,10],[8]]
dotfile = file('image.dot', 'w')
dotfile.write('Digraph{\n')
for k in range(len(A)):
for l in range(len(A[k])):
dotfile.write(str(A[k][l])+'[pos="'+str(l)+',-'+str(k)+'!"];\n')
for k in range(len(A)-1):
for l in A[k]:
for m in A[k+1]:
if m%l==0:
dotfile.write(str(l)+'->'+str(m)+';\n')
dotfile.write('}\n')
dotfile.close()