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

时间:2017-12-05 12:09:47

标签: python networkx

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

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

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
}

我想将点文件添加如下:

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
{rank=same; a b};
}

因为在前面的情况下,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")

如何从这里轻松设置某些节点的等级?我想避免pygraphviz库,但我对graphviz库很好。 Pygraphviz won't easily install on Windows via pip install我需要保持这个程序"易于使用和维护",因为我不是唯一可能使用它的人。

0 个答案:

没有答案