使用 NetworkX 进行图形排列和旋转

Graph permutation and rotation witn NetworkX

我与 Networkx 合作生成一些 class 图表。

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

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

Edit_1:

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

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

输入:

图G的邻接矩阵

进程:

对 G 应用 90 度旋转

输出:

旋转邻接矩阵

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

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

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

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

EDIT2 给定一个 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.

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

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

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

看看 networkx 命令 relabel_nodes

给定一个图 G,如果我们想将节点 0 重新标记为 1133作为 0 [所以节点的排列,留下 2],我们创建字典 mapping = {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.]]