【问题标题】:Network graph visualisation with an axis of levels in python (layered layout)具有python级别轴的网络图可视化(分层布局)
【发布时间】:2019-07-05 12:48:49
【问题描述】:

我想可视化一个网络,以便节点根据每个节点的变量在垂直轴上对齐。这有点难以解释,但这是一张(低质量)图像

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

如果我使用邻接矩阵,有什么想法可以在 Python 中实现吗?

【问题讨论】:

  • 它是一棵树吗?
  • 不一定是树,可以有循环
  • 这个答案可能对一些人有所帮助:stackoverflow.com/questions/29586520/…。但它假设有一棵树。允许循环的修改可以在另一个答案中找到。

标签: python visualization networkx graph-tool


【解决方案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() 设置图形边界

【讨论】:

  • 感谢您的回答。所以我可以根据我的变量设置 y 坐标,但我有点希望以某种智能方式生成 x 坐标
  • 遍历每个节点。根据节点id生成x坐标
猜你喜欢
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2019-10-27
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多