问题描述
我正在构建一个包含许多节点的图形,大约 3000 个.我编写了一个简单的 python 程序来使用 graphviz 来解决这个问题,但是它给了我分段错误,我不知道为什么,如果图形太大或如果我错过了什么.
I'm building a graph with many nodes, around 3000. I wrote a simple python program to do the trick with graphviz, but it gives me segmentation fault and I don't know why, if the graph is too big or if i'm missing something.
代码是:
#!/usr/bin/env python # Import graphviz import sys sys.path.append('..') sys.path.append('/usr/lib/graphviz') import gv # Import pygraph from pygraph.classes.graph import graph from pygraph.classes.digraph import digraph from pygraph.algorithms.searching import breadth_first_search from pygraph.readwrite.dot import write # Graph creation gr = graph() file = open('nodes.dat', 'r') line = file.readline() while line: gr.add_nodes([line[0:-1]]) line = file.readline() file.close() print 'nodes finished, beginning edges' edges = open('edges_ok.dat', 'r') edge = edges.readline() while edge: gr.add_edge((edge.split()[0], edge.split()[1])) edge = edges.readline() edges.close() print 'edges finished' print 'Drawing' # Draw as PNG dot = write(gr) gvv = gv.readstring(dot) gv.layout(gvv,'dot') gv.render(gvv,'svg','graph.svg')
它在 gv.layout() 调用时崩溃.
这些文件类似于:节点:
The files are somthing like: nodes:
node1 node2 node3
edges_ok:
node1 node2 node2 node3
推荐答案
我把布局类型从dot改成neato,问题就解决了.
I changed the layout type from dot to neato and that solved the problem.
我搜索了一下,似乎点布局在大图上有点错误.
I searched a bit and it seems that the dot layout is a bit faulty on large graphs.