【发布时间】:2019-02-20 16:15:41
【问题描述】:
我有 1000 个不同的名称,每个名称构成一个节点。每个名称可以无限次与 0..1000 个其他名称连接。我想以这样一种方式绘制它,即两个节点之间的距离与它们连接的次数成反比。
例子:
'node1' : ['node2','node2','node2','node2','node2','node3']
'node2' : ['node1','node1','node1','node1','node1']
'node3' : ['node1']
node1和node2应该挤在一起,node3应该离得更远。
这可能吗?目前我正在使用以下代码绘制图表:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_nodes_from(grapharr.keys())
for k in grapharr:
for j in grapharr[k]:
G.add_edge(k,j)
nx.draw_networkx(G, **options)
grapharr是一个字典结构,其中键是节点,值是包含特定节点连接的数组。
【问题讨论】:
-
我不认为这对所有节点都是可能的。想想这样的优化问题会有哪些限制
-
网络是定向的还是非定向的? IE。在您的示例中是否总是像从 A 到 B 的关联数与从 B 到 A 的关联数一样?如果是这样,您可以将这些转换为边缘权重并使用力导向/弹簧布局。由于@yatu 提到的约束可能发生冲突,这并不准确,但这将是朝着正确方向迈出的一步。