python - 在 NetworkX 中绘制将绘图区域划分为 3 的图形

标签 python graph draw networkx

我在 Networkx 中有一张图表,里面有不同的信息。图形节点如下所示:

G = nx.DiGraph()
G.add_node(shape1, level=1)
G.add_node(shape2, level=2)
G.add_node(shape3, level=2)
G.add_node(shape4, level=3)
...

我想绘制图表,以便将第 1 级的所有形状放在图的顶部,第 3 级的所有形状位于图的下部,第 2 级的所有形状位于图的中间。最多有 3 个级别。

我一直在阅读 NetworkX 的文档,但到目前为止我只使用了节点的随机定位:

pos = nx.spring_layout(G) nx.draw(G, pos)

您知道有什么更智能的方法可以按照我的需要定位图表的节点吗?

P.S.:所需的输出大致如下: enter image description here

我不需要绘制划分级别的线,我只是用它们来明确我需要什么。

最佳答案

布局“点”提供了 graphviz 的接口(interface)似乎做你正在寻找的事情。虽然它适用于您提供的这个简单图表,但您可能需要调整输出以获得更大更复杂的图表。

import networkx as nx

G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)

import pylab as plt
nx.draw_graphviz(G, node_size=1600, cmap=plt.cm.Blues,
                 node_color=range(len(G)),
                 prog='dot')
plt.show()

enter image description here

关于python - 在 NetworkX 中绘制将绘图区域划分为 3 的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22609101/

相关文章:

python - SQLAlchemy 的 UnicodeText 列在我的 MySQL 表上给了我一个 str ;不应该是unicode吗?

C++从图中删除顶点

c++ - 使用坐标数组在QOpenGLWidget中绘制GL_LINE

python - python 的任何内置模块都使用线程吗?

python - 如何设置 Pandas 数据框数据左/右对齐?

python - 如何创建导入最常用的 python 模块的快捷方式?

algorithm - 如何在不使用节点本身的情况下检查节点的特定邻居与所有其他邻居之间的连接性

python - tf.gradients() 不适用于 'tf.assign()' ,但适用于 '='

android - LibGDX ShapeRenderer 圆形绘图

java - 在框架中画一根绳子。