networkx 读取图形时如何保持图形形状
How to keep graph shape when read it by networkx
我有一个文件显示不同点的坐标(前 10 行):
1 10.381090522139 55.39134945301
2 10.37928179195319 55.38858713256631
3 10.387152479898077 55.3923338690609
4 10.380048819655258 55.393938880906745
5 10.380679138517507 55.39459444742785
6 10.382474625286 55.392132993022
7 10.383736185130601 55.39454404088371
8 10.387334283235987 55.39433237195271
9 10.388468103023115 55.39536574771765
10 10.390814951258335 55.396308397998475
现在我想计算它们的MST(最小生成树)所以首先我将我的坐标更改为权重图(距离->权重):
n = 10
data = []
for i in range(0, n):
for j in range(i + 1, n):
temp = []
temp.append(i)
temp.append(j)
x = np.array(rawdata[i, 1:3])
y = np.array(rawdata[j, 1:3])
temp.append(np.linalg.norm(x - y))
data.append(temp)
然后,使用networkx加载权重数据:
G = nx.read_weighted_edgelist("data.txt")
T = nx.minimum_spanning_tree(G)
nx.draw(T)
plt.show()
但我无法从结果中看到原始形状:
如何解决这个问题?
我只是回答关于节点位置的问题。我无法从你所做的事情中判断出最小生成树是否是你所追求的。
绘制网络时,它会根据部分随机的算法分配位置。如果您希望节点到达特定位置,则必须在可选参数的调用中包含该信息。所以定义一个字典(它通常被称为 pos
)使得 pos[node]
是一个元组 (x,y)
其中 x
是 node
和 [=15 的 x 坐标=] 是 node
.
的 y 坐标
那么通话是nx.draw(T, pos=pos)
.
我有一个文件显示不同点的坐标(前 10 行):
1 10.381090522139 55.39134945301
2 10.37928179195319 55.38858713256631
3 10.387152479898077 55.3923338690609
4 10.380048819655258 55.393938880906745
5 10.380679138517507 55.39459444742785
6 10.382474625286 55.392132993022
7 10.383736185130601 55.39454404088371
8 10.387334283235987 55.39433237195271
9 10.388468103023115 55.39536574771765
10 10.390814951258335 55.396308397998475
现在我想计算它们的MST(最小生成树)所以首先我将我的坐标更改为权重图(距离->权重):
n = 10
data = []
for i in range(0, n):
for j in range(i + 1, n):
temp = []
temp.append(i)
temp.append(j)
x = np.array(rawdata[i, 1:3])
y = np.array(rawdata[j, 1:3])
temp.append(np.linalg.norm(x - y))
data.append(temp)
然后,使用networkx加载权重数据:
G = nx.read_weighted_edgelist("data.txt")
T = nx.minimum_spanning_tree(G)
nx.draw(T)
plt.show()
但我无法从结果中看到原始形状:
如何解决这个问题?
我只是回答关于节点位置的问题。我无法从你所做的事情中判断出最小生成树是否是你所追求的。
绘制网络时,它会根据部分随机的算法分配位置。如果您希望节点到达特定位置,则必须在可选参数的调用中包含该信息。所以定义一个字典(它通常被称为 pos
)使得 pos[node]
是一个元组 (x,y)
其中 x
是 node
和 [=15 的 x 坐标=] 是 node
.
那么通话是nx.draw(T, pos=pos)
.