【问题标题】:graphviz segmentation faultgraphviz 分段错误
【发布时间】:2011-02-07 09:49:25
【问题描述】:

我正在构建一个包含许多节点的图,大约 3000 个。我编写了一个简单的 python 程序来使用 graphviz 来解决这个问题,但它给了我分段错误,我不知道为什么,如果图太大或如果我错过了什么。

代码是:

#!/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() 调用时崩溃。

这些文件类似于: 节点:

   node1
   node2
   node3

edges_ok:

   node1 node2
   node2 node3

【问题讨论】:

  • 听起来你应该向 Graphviz 维护人员报告?
  • 如果不是程序员相关的问题,我肯定会这样做。
  • 您是否尝试过构建一个点文件并使用(命令行)dotty 处理它?这也是segphault吗?
  • 如果 Graphviz 出现段错误,这是 Graphviz 中的错误。该软件已经足够成熟,它应该优雅地处理任何错误。
  • 我将此报告给了 graphviz 错误跟踪系统。

标签: python segmentation-fault graphviz


【解决方案1】:

我将布局类型从点更改为neato,这解决了问题。

我搜索了一下,似乎点布局在大图上有点错误。

【讨论】:

  • "I changed the layout type from dot to neato " ...你能告诉我们你是怎么做到的吗?
  • Nvm,只需将dot 更改为neato。例如 dot -Tsvg x.gv -o x.svg 变为 neato-Tsvg x.gv -o x.svg
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2014-06-23
相关资源
最近更新 更多