gpt4 book ai didi

python-3.x - 使用 NetworkX 进行图形排列和旋转

转载 作者:行者123 更新时间:2023-12-05 04:06:09 25 4
gpt4 key购买 nike

我与 Networkx 合作生成某类图表。

现在我想置换节点并将图形旋转(80°,90°,120°度)

如何使用 NetworkX 在图形上应用排列旋转

Edit_1:

给定一个图的邻接矩阵,我想以保留边和顶点链接的方式旋转图。唯一改变的是节点的位置。

我想做的是将我的图形旋转 90 度。

输入:

图G的邻接矩阵

过程:

在 G 上应用 90 度旋转

输出:

旋转邻接矩阵

这意味着,图保留了它的拓扑结构,只保留了改变位置的邻接矩阵的索引。

例如,旋转后索引 0 处的节点 1 将位于索引 4 处。

我尝试了什么?
1) 我查看了 numpy.random.permutation() 但它似乎不接受旋转参数。

2) 在 networkX 中我没有找到任何允许进行旋转的函数。

编辑2给定一个 5*5 的邻接矩阵(5 个节点:

adj=[[0,1,0,0,1],
[1,0,1,1,0],
[0,0,0,1,1],
[0,0,1,0,1],
[1,1,1,1,0]
]

我想在索引之间进行置换。假设节点 1 代替节点 3,节点 3 代替节点 4,节点 4 代替节点 1。

这只是节点的排列(保留它们的边)。

l 想在字典中保留原始索引和排列后的新索引之间的映射。

其次,我想对该邻接矩阵应用 90° 角的排列或旋转。 (这就像在图像上应用旋转)。我不确定该怎么做。

最佳答案

看看 networkx 命令 relabel_nodes .

给定一个图 G,如果我们想将节点 0 重新标记为 113,并且 30 [所以节点的排列,将 2 留在原地],我们创建字典映射 = {0:1, 1:3, 3:0}。然后我们做

H = nx.relabel_nodes(G, mapping)

H 现在是置换图。

import networkx as nx
G = nx.path_graph(4) #0-1-2-3
mapping = {0:1, 1:3, 3:0}
H = nx.relabel_nodes(G, mapping) #1-3-2-0

#check G's adjacency matrix
print(nx.to_numpy_matrix(G,nodelist=[0,1,2,3]))
> [[ 0. 1. 0. 0.]
[ 1. 0. 1. 0.]
[ 0. 1. 0. 1.]
[ 0. 0. 1. 0.]]

#check H's adjacency matrix
print(nx.to_numpy_matrix(H,nodelist=[0,1,2,3]))
> [[ 0. 0. 1. 0.]
[ 0. 0. 0. 1.]
[ 1. 0. 0. 1.]
[ 0. 1. 1. 0.]]

关于python-3.x - 使用 NetworkX 进行图形排列和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179002/

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