gpt4 book ai didi

python - NetworkX图: creating nodes with ordered list

转载 作者:行者123 更新时间:2023-12-01 05:07:17 25 4
gpt4 key购买 nike

我对图表完全陌生。我有一个 213 X 213 距离矩阵。我一直在尝试使用网络可视化距离矩阵,我的想法是,在绘制图形时,相距较远的节点将显示为单独的簇。所以我正在创建一个带有代表列索引的节点的图表。我需要跟踪节点以便之后对其进行标记。我需要按特定顺序添加边,因此我需要跟踪节点及其标签。

这是代码:

import networkx as nx
G = nx.Graph()
G.add_nodes_from(time_pres) ##time_pres is the list of labels that I want specific node to have

for i in range(212):
for j in range(i+1, 212):
color = ['green' if j == i+1 else 'red'][0]
edges.append((i,j, dist[i,j], 'green')) ##This thing requires allocation of distance as per the order in dist matrirx
G.add_edge(i,j, dist = dist[i,j], color = 'green')

我现在正在做的方式是分配 id 为数字的节点,这与 time_pres 中的标签索引不同。

最佳答案

我可以回答你似乎在问的问题,但这并不会结束你的麻烦。具体来说,我会告诉你哪里出了问题。

因此,我们假设变量 time_pres定义如下

time_pres = [('person1', '1878'), ('person2', '1879'), etc)]

那么,

G.add_nodes_from(time_pres)

创建带有标签 ('person1', '1878') 的节点, ('person2', '1879')这些节点保存在字典中,键是节点的标签,值是与每个节点相关的任何附加属性。就您而言,您没有属性。您还可以从 manual online 看到这一点,或者如果您输入 help(G.add_nodes_from) .

您甚至可以通过键入以下任一行来查看节点的标签。

G.nodes()        # either this
G.node.keys() # or this

这将打印标签列表,但由于它们来自字典,因此它们的顺序可能与 time_pres 不同。 。您可以通过标签来引用节点。他们没有任何额外的 ID 号或其他任何信息。

现在,添加边缘。 manual表示如果两个节点中尚未存在于图中,则将添加它们中的任何一个。所以,当你这样做时

G.add_edge(i, j, dist = dist[i,j], color = 'green')

其中,ij是数字,它们被添加到图表中,因为它们尚不存在于图表标签中。因此,您最终添加了节点 ij以及它们之间的边缘。相反,你想做

G.add_edge(time_pres[i], time_pres[j], dist = dist[i,j], color = 'green')

这将在节点 time_pres[i] 之间添加一条边和time_pres[j] 。据我了解,这就是你的目标。

<小时/>

但是,您似乎期望在绘制图形时,节点之间的距离 time_pres[i]time_pres[j]由属性 dist=dist[i,j] 决定在G.add_edge() 。事实上,节点的位置是由保存节点的 x 和 y 位置的元组决定的。来自 manual对于 nx.draw() .

pos : dictionary, optional

A dictionary with nodes as keys and positions as values. If not specified a spring layout positioning will be computed. See networkx.layout for functions that compute node positions.

如果您不定义节点位置,它们将随机生成。在你的情况下,你需要一个像

这样的字典
pos = {('person1', '1878'): (23, 10),
('person2', '1879'): (18, 11),
etc}

然后,节点之间的坐标ij将导致距离等于 dist[i,j] 。您必须弄清楚这些坐标,但由于您还没有明确说明如何导出矩阵 dist ,对此我无话可说。

关于python - NetworkX图: creating nodes with ordered list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com