带有python中的水平轴的网络图可视化(分层布局)

时间:2019-07-05 12:48:49

标签: python visualization networkx graph-tool

我想可视化网络,以使节点基于每个节点的变量在垂直轴上对齐。有点难以解释,但这是一张(低质量)图像 What I am looking for

因此,每个节点都有一个值,并且图形被可视化,因此这些值在垂直轴上对齐。在上图中,绿色节点的值介于0和1之间,蓝色节点的值介于1和2之间,黄色节点的值至少为2。

有什么想法,如果我使用邻接矩阵坐席,如何在Python中实现?

1 个答案:

答案 0 :(得分:1)

您可以使用库NetworkX创建图形,并使用matplotlib显示图形。

如何创建简单图形:

import networkx as nx

graph = nx.Graph()
graph.add_node('A')
graph.add_node('B')
graph.add_node('C')

graph.add_edge('A', 'B')
graph.add_edge('B', 'C')
graph.add_edge('A', 'C')

然后您可以显示它:

import matplotlib.pyplot as plt
plt.figure()
nx.draw(graph, with_labels=False)
plt.show()

在绘制节点时,还可以通过将参数pos传递到nx.draw来更改节点的垂直位置

nx.draw(graph, with_labels=False, pos={'A':(0, 0), 'B':(0,3), 'C':(2,3)})

检查nx.draw参数的文档:https://networkx.github.io/documentation/stable/reference/generated/networkx.drawing.nx_pylab.draw_networkx.html#networkx.drawing.nx_pylab.draw_networkx

还请记住使用plt.xlim()plt.ylim()

设置图形边界