【Python】networkx图布局与线性代数(5)

我所以理解的图布局:单纯nx.drwa()画出的图,保存后再打开会出现不一样的情况,所以需要布局来固定每个点的位置。一些布局的api可以直接看原博客:NetworkX系列教程(8)-Drawing Graph

如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了。详细的画图信息可以看这里

networkx线性代数部分

由图打印出邻接矩阵list、特征值list;

#定义图的节点和边 
nodes = ['0','1','2','3','4','5','a','b','c'] 
edges = [('0','0',1),('0','1',1),('0','5',1),('0','5',2),('1','2',3),('1','4',5),('2','1',7),('2','4',6),('a','b',0.5),('b','c',0.5),('c','a',0.5)] 
 
plt.subplots(1,2,figsize=(10,3)) 
 
#定义一个无向图和有向图 
G1 = nx.Graph() 
G1.add_nodes_from(nodes) 
G1.add_weighted_edges_from(edges) 
 
G2 = nx.DiGraph() 
G2.add_nodes_from(nodes) 
G2.add_weighted_edges_from(edges) 
 
pos1 = nx.circular_layout(G1) 
pos2 = nx.circular_layout(G2) 
 
#画出无向图和有向图 
plt.subplot(121) 
nx.draw(G1,pos1, with_labels=True, font_weight='bold') 
plt.title('无向图', fontproperties=myfont) 
plt.axis('on') 
plt.xticks([]) 
plt.yticks([]) 
 
plt.subplot(122) 
nx.draw(G2,pos2, with_labels=True, font_weight='bold') 
plt.title('有向图', fontproperties=myfont) 
plt.axis('on') 
plt.xticks([]) 
plt.yticks([]) 
 
plt.show() 
 
#控制numpy输出小数位数 
import numpy as np 
np.set_printoptions(precision=3)  
 
#邻接矩阵 
A = nx.adjacency_matrix(G1) 
print('邻接矩阵:\n', A.todense()) 
 
#关联矩阵 
I = nx.incidence_matrix(G1) 
print('\n关联矩阵:\n', I.todense()) 
 
#拉普拉斯矩阵 
L=nx.laplacian_matrix(G1) 
print('\n拉普拉斯矩阵:\n', L.todense()) 
 
#标准化的拉普拉斯矩阵 
NL=nx.normalized_laplacian_matrix(G1) 
print('\n标准化的拉普拉斯矩阵:\n', NL.todense()) 
 
#有向图拉普拉斯矩阵 
DL=nx.directed_laplacian_matrix(G2) 
print('\n有向拉普拉斯矩阵:\n', DL) 
 
#拉普拉斯算子的特征值 
LS=nx.laplacian_spectrum(G1) 
print('\n拉普拉斯算子的特征值:\n', LS) 
 
#邻接矩阵的特征值 
AS=nx.adjacency_spectrum(G1) 
print('\n邻接矩阵的特征值:\n', AS) 
 
#无向图的代数连通性 
AC=nx.algebraic_connectivity(G1) 
print('\n无向图的代数连通性:\n', AC) 
 
#图的光谱排序 
SO=nx.spectral_ordering(G1) 
print('\n图的光谱排序:\n', SO) 
 
#两个矩阵的解释看:https://blog.csdn.net/Hanging_Gardens/article/details/55670356

"""
邻接矩阵: 
 [[0.  0.  0.  0.  5.  0.  0.  0.  6. ] 
 [0.  0.  0.  2.  0.  0.  0.  0.  0. ] 
 [0.  0.  0.  0.  0.  0.5 0.5 0.  0. ] 
 [0.  2.  0.  1.  1.  0.  0.  0.  0. ] 
 [5.  0.  0.  1.  0.  0.  0.  0.  7. ] 
 [0.  0.  0.5 0.  0.  0.  0.5 0.  0. ] 
 [0.  0.  0.5 0.  0.  0.5 0.  0.  0. ] 
 [0.  0.  0.  0.  0.  0.  0.  0.  0. ] 
 [6.  0.  0.  0.  7.  0.  0.  0.  0. ]] 
 
关联矩阵: 
 [[1. 1. 0. 0. 0. 0. 0. 0. 0.] 
 [0. 0. 1. 0. 0. 0. 0. 0. 0.] 
 [0. 0. 0. 1. 1. 0. 0. 0. 0.] 
 [0. 0. 1. 0. 0. 1. 0. 0. 0.] 
 [0. 1. 0. 0. 0. 1. 0. 1. 0.] 
 [0. 0. 0. 1. 0. 0. 0. 0. 1.] 
 [0. 0. 0. 0. 1. 0. 0. 0. 1.] 
 [0. 0. 0. 0. 0. 0. 0. 0. 0.] 
 [1. 0. 0. 0. 0. 0. 0. 1. 0.]] 
 
拉普拉斯矩阵: 
 [[11.   0.   0.   0.  -5.   0.   0.   0.  -6. ] 
 [ 0.   2.   0.  -2.   0.   0.   0.   0.   0. ] 
 [ 0.   0.   1.   0.   0.  -0.5 -0.5  0.   0. ] 
 [ 0.  -2.   0.   3.  -1.   0.   0.   0.   0. ] 
 [-5.   0.   0.  -1.  13.   0.   0.   0.  -7. ] 
 [ 0.   0.  -0.5  0.   0.   1.  -0.5  0.   0. ] 
 [ 0.   0.  -0.5  0.   0.  -0.5  1.   0.   0. ] 
 [ 0.   0.   0.   0.   0.   0.   0.   0.   0. ] 
 [-6.   0.   0.   0.  -7.   0.   0.   0.  13. ]] 
 
标准化的拉普拉斯矩阵: 
 [[ 1.     0.     0.     0.    -0.418  0.     0.     0.    -0.502] 
 [ 0.     1.     0.    -0.707  0.     0.     0.     0.     0.   ] 
 [ 0.     0.     1.     0.     0.    -0.5   -0.5    0.     0.   ] 
 [ 0.    -0.707  0.     0.75  -0.139  0.     0.     0.     0.   ] 
 [-0.418  0.     0.    -0.139  1.     0.     0.     0.    -0.538] 
 [ 0.     0.    -0.5    0.     0.     1.    -0.5    0.     0.   ] 
 [ 0.     0.    -0.5    0.     0.    -0.5    1.     0.     0.   ] 
 [ 0.     0.     0.     0.     0.     0.     0.     0.     0.   ] 
 [-0.502  0.     0.     0.    -0.538  0.     0.     0.     1.   ]] 
 
有向拉普拉斯矩阵: 
 [[ 0.889 -0.117 -0.029 -0.087 -0.319 -0.029 -0.029 -0.129 -0.242] 
 [-0.117  0.889 -0.026 -0.278 -0.051 -0.026 -0.026 -0.114 -0.056] 
 [-0.029 -0.026  0.994 -0.012 -0.009 -0.481 -0.481 -0.025 -0.01 ] 
 [-0.087 -0.278 -0.012  0.757 -0.097 -0.012 -0.012 -0.052 -0.006] 
 [-0.319 -0.051 -0.009 -0.097  0.994 -0.009 -0.009 -0.041 -0.434] 
 [-0.029 -0.026 -0.481 -0.012 -0.009  0.994 -0.481 -0.025 -0.01 ] 
 [-0.029 -0.026 -0.481 -0.012 -0.009 -0.481  0.994 -0.025 -0.01 ] 
 [-0.129 -0.114 -0.025 -0.052 -0.041 -0.025 -0.025  0.889 -0.045] 
 [-0.242 -0.056 -0.01  -0.006 -0.434 -0.01  -0.01  -0.045  0.994]] 
 
拉普拉斯算子的特征值: 
 [-1.436e-15  0.000e+00  4.610e-16  7.000e-01  1.500e+00  1.500e+00 
  4.576e+00  1.660e+01  2.013e+01] 
 
邻接矩阵的特征值: 
 [12.068+0.000e+00j  2.588+0.000e+00j -7.219+0.000e+00j -4.925+0.000e+00j 
 -1.513+0.000e+00j  1.   +0.000e+00j -0.5  +2.393e-17j -0.5  -2.393e-17j 
  0.   +0.000e+00j] 
 
无向图的代数连通性: 
 0.0 
 
图的光谱排序: 
 ['4', '2', '1', '0', '5', 'b', 'c', 'a', '3'] 
"""

 

 

参考:

NetworkX系列教程(9)-线性代数相关

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值