仅使用networkx设置节点(子图)的等级

ZoS*_*Sal 5 python networkx

我一直在仅使用Networkx库通过Python构建图形。我的程序nx.drawing.nx_pydot.to_pydot()通过在点对象上调用write_png(“ output.png”)使用.vi 文件输出.dot文件,并使用点引擎通过Graphviz绘制该文件。

我的点文件可能如下所示:

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
}
Run Code Online (Sandbox Code Playgroud)

我要添加点文件如下:

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
{rank=same; a b};
}
Run Code Online (Sandbox Code Playgroud)

因为在前一种情况下b和c绘制在a下方,而在后一种情况下c绘制在a和b下方,它们处于同一水平。

我在文档中找不到如何进行此简单更改。我知道这与声明一个子图并设置其属性相同,但是我正在努力的部分是设置该子图的rank属性。

构建完我的图形后,以下代码将处理输出。

DG = myGraphBuildFunction(dictOfEdges)
p = nx.drawing.nx_pydot.to_pydot(DG)
p.write_png('example.png')
nx.drawing.nx_pydot.write_dot(DG, "Output.dot")
print("Graph Generated")
Run Code Online (Sandbox Code Playgroud)

如何从这里轻松设置某些节点的等级?我想避免使用pygraphviz库,但使用graphviz库很好。Pygraphviz 不会通过Windows轻松安装pip install,我需要保持该程序“易于使用和维护”,因为我不是唯一可能使用它的人。