将(浮动)坐标添加到 Networkx 中的图形节点 - IndexError
Adding (float) coordinates to graph nodes in Networkx - IndexError
我有一个 .txt 形式的数据集,我想将其绘制成图表。此txt提供数据如下:
68 57
65 86
67 83
105 156
等等,所以它是一个边缘列表。
import networkx as nx
import numpy as py
import copy
import matplotlib.pyplot as plt
network0=nx.read_edgelist(r'C:\Users\alexl\Documents\new_python\init_edgelist.txt',create_using=nx.DiGraph)
nx.draw(network0)
plt.show()
在这些之后,我可以看到绘制的有向图,正如我所想的那样,它的拓扑结构错误。节点和边已正确连接,但没有位置信息。
我尝试在此导入另一个包含 3 列(节点 x y)的 .txt,例如:
2 478909.145 4204244.629
有了这个:
coordinates=py.loadtxt(r'C:\Users\alexl\Documents\new_python\nodes_coordinates.txt')
pos=coordinates
nx.draw(network0,pos=pos,with_labels=True)
plt.show()
但似乎没有用。
IndexError:只有整数、切片(:
)、省略号(...
)、numpy.newaxis(None
)和整数或布尔数组是有效的索引。 <<< 这就是当我尝试 运行 时它在控制台中显示的内容。
我想这与坐标是浮动的事实有关?或者由 txt 给出的他们构成了一个列表,我们想要一本字典?之后我想向边缘添加权重 (0,1,2),但首先我想看到我的数据在拓扑方面“正确”绘制。
nx.draw 期望 pos
是一个字典,当它们的键是节点,值是位置时。
假设您想将输入读取为 numpy 数组,您可以做的是
pos = dict(zip(coordinates[:,0].astype(int), coordinates[:,1:]))
nx.draw(network0, pos=pos, with_labels=True)
否则,您可以遍历文件的行并直接构建字典。
pos = {}
with open('coords.txt') as f:
for line in f:
node, x, y = line.split()
pos[node] = float(x), float(y)
我有一个 .txt 形式的数据集,我想将其绘制成图表。此txt提供数据如下:
68 57
65 86
67 83
105 156
等等,所以它是一个边缘列表。
import networkx as nx
import numpy as py
import copy
import matplotlib.pyplot as plt
network0=nx.read_edgelist(r'C:\Users\alexl\Documents\new_python\init_edgelist.txt',create_using=nx.DiGraph)
nx.draw(network0)
plt.show()
在这些之后,我可以看到绘制的有向图,正如我所想的那样,它的拓扑结构错误。节点和边已正确连接,但没有位置信息。 我尝试在此导入另一个包含 3 列(节点 x y)的 .txt,例如:
2 478909.145 4204244.629
有了这个:
coordinates=py.loadtxt(r'C:\Users\alexl\Documents\new_python\nodes_coordinates.txt')
pos=coordinates
nx.draw(network0,pos=pos,with_labels=True)
plt.show()
但似乎没有用。
IndexError:只有整数、切片(:
)、省略号(...
)、numpy.newaxis(None
)和整数或布尔数组是有效的索引。 <<< 这就是当我尝试 运行 时它在控制台中显示的内容。
我想这与坐标是浮动的事实有关?或者由 txt 给出的他们构成了一个列表,我们想要一本字典?之后我想向边缘添加权重 (0,1,2),但首先我想看到我的数据在拓扑方面“正确”绘制。
nx.draw 期望 pos
是一个字典,当它们的键是节点,值是位置时。
假设您想将输入读取为 numpy 数组,您可以做的是
pos = dict(zip(coordinates[:,0].astype(int), coordinates[:,1:]))
nx.draw(network0, pos=pos, with_labels=True)
否则,您可以遍历文件的行并直接构建字典。
pos = {}
with open('coords.txt') as f:
for line in f:
node, x, y = line.split()
pos[node] = float(x), float(y)