2011-10-24 62 views
2

我有一个networkx图形对象。我可以使用to_agraph在一个文件中绘制图形。但是我想在内存中绘制图形,然后我可以将其保存在数据库表中,而不必将其写入文件。有没有办法做到这一点?使用Networkx绘制图形to_agraph()

以下是我用于将图形绘制到文件的代码。

import networkx as nx 
g = nx.DiGraph() 
g.add_nodes_from(MyNodes) 
g.add_add_edges_from(MyEdges) 
grph=nx.to_agraph(g) 
s=grph.string() 
grph.layout(prog='dot') 
grph.draw('test_graph.gif') 

谢谢!

回答

1

如果你没有指定一个文件,你会得到一个带有图像数据的字符串。 例如

In [1]: import networkx as nx 

In [2]: G=nx.path_graph(4) 

In [3]: A=nx.to_agraph(G) 

In [4]: A.layout(prog='dot') 

In [5]: png=A.draw(format='png') 

In [6]: png[0:10] 
Out[6]: '\x89PNG\r\n\x1a\n\x00\x00' 
+0

谢谢@Aric,这正是我所期待的。你知道我们是否可以生成缩略图而不是巨大的图形图像吗?再次感谢。 – Rinks

+0

你可以尝试使用PIL。 “从字符串读取”的http://www.pythonware.com/library/pil/handbook/introduction.htm上的示例演示了如何将上面的字符串'png'读入到可以操作的图像对象中。 – Aric

+0

非常感谢@Aric。结果很好! – Rinks