我使用Python 3在windows机器上工作,尽管做了很多努力,但没有安装pygraphviz。单独讨论。
我有networkx和graphviz模块.是否有一种在networkx中构建网络图并提取为不使用pygraphviz?的图形显示格式的范例?
drawing.nx_agraph和nx_agraph中的所有相关功能似乎都需要pygraphviz,但我已经习惯了使用networkx并喜欢其中的功能。在networkx的文档中,它甚至表示他们关注的是图形对象的开发,而不是实际的显示。
发布于 2017-11-14 03:36:28
您可以使用pydot (https://pypi.python.org/pypi/pydot)作为PyGraphviz的纯Python替代品。
In [1]: import networkx
In [2]: import sys
In [3]: G = networkx.path_graph(4)
In [4]: networkx.drawing.nx_pydot.write_dot(G,sys.stdout)
strict graph {
0;
1;
2;
3;
0 -- 1;
1 -- 2;
2 -- 3;
}发布于 2019-03-16 00:44:32
我知道这是个老生常谈的问题,但我也在寻找同样的问题:如何从NetworkX中的图形中获取点符号
(如果你只对答案感兴趣,跳过这段。我实际上想要显示一个NetworkX多图,但是即使NetworkX是处理网络和图形的强大的python库,它在显示(呈现)图形和网络时也有相当有限的选择。NetworkX使用Matplotlib提供可视化图形的基本功能,而可视化多图没有选项。NetworkX不是用来可视化图形的,所以在NetworkX文档中,他们建议使用一些图形可视化工具,细胞角、伤寒、墨维兹。所有这些工具都有某种python接口,但最好的(最简单和最简单的使用)是图文,它支持图形绘图软件的DOT语言。在图文中可视化图形是非常简单和方便的,您可以使用一个简短的行,比如graph.view(),它默认创建一个PDF文件并在系统的默认PDF查看器中打开它,但是您也可以查看和创建图像文件,比如SVG和PNG。因此,理想的做法是将NetworkX图转换为图and图,并将NetworkX图转换为DOT符号,然后由图文读取。)
Aric的解决方案很简单,可以打印出图的DOT表示法,但这是一种黑客,而且在我的例子中,我需要将DOT符号保存在字符串变量中,这样我就可以使用它在图文中从那个DOT符号中创建一个图形。
networkx.drawing.nx_pydot.write_dot(来源)是一个创建DOT格式并将其保存到路径(文件句柄)的函数。这一职能的代码是:
@open_file(1, mode='w')
def write_dot(G, path):
P = to_pydot(G)
path.write(P.to_string())
return这给了我们答案:
from networkx import path_graph
from networkx.drawing.nx_pydot import to_pydot
G = path_graph(4)
dot = to_pydot(G).to_string()
print(dot)函数to_pydot (来源)使用皮多特库创建具有to_string (来源)方法的pydot.Dot对象,该方法以DOT语言返回图形的字符串表示。
P.S.:要使用呈现DOT源代码 in 图文,您可以这样做:
from graphviz import Source
src = Source(dot) # dot is string containing DOT notation of graph
src.view()P.P.S.:使用Matplotlib (图像的左侧)和图文 (图像的右侧)可视化图形networkx.margulis_gabber_galil_graph(3)时,以下两幅图片显示不同的效果

https://stackoverflow.com/questions/47265768
复制相似问题