使用networkx库可视化对称矩阵的网络图形

Posted on 2021-02-08 16:38  Smilesq  阅读(394)  评论(0编辑  收藏  举报

首先我的数据是.mat格式,讲讲如何用python读取.mat格式的数据(全套来)

我是python3版本

第一种读取方法:

import h5py

features_struct = h5py.File(r'C:\\Users\\Administrator\\Desktop\\xx\\MatlabProagramming\\co1p.mat')

出现了这个错误!!!最开始将.mat文件转换成.csv格式文件还好用,大家可以先试试这个方法

 第二种方法:

import scipy.io

import pandas as pd

data = scipy.io.loadmat(r'C:\Users\Administrator\Desktop\xx\MatlabProagramming\co1.mat') # 读取mat文件(这个方法成功啦)(修改数据存储路径)

data1=list(data1.values())[-1]

dfdata = pd.DataFrame(data=data1)

datapath1 = 'C:\\Users\\Administrator\\Desktop\\c1.csv'#存储路径(需要修改此行代码)

dfdata.to_csv(datapath1, index=False)

第一步数据读取完毕

第二步需要了解networkx(附官网):https://networkx.org/documentation/stable/reference/introduction.html#drawing

矩阵绘图链接:https://blog.csdn.net/silent56_th/article/details/82497665?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase

绘图的一些函数:https://www.cnblogs.com/minglex/p/9205160.html

 样式说明:https://www.cnblogs.com/gispathfinder/p/5790949.html

 

如果使用networkx库进行绘制网络,需要先在anaconda中pip install networkx就可以调用这个库中的函数进行绘制了

 举一个例子

 

 

 第二个例子:手动添加边及边的权重,可以直接调函数求点之间的最短路径长度

 

 

 

 

 第三个例子:根据节点的度大小不同,显示不同深浅颜色的节点

 

 

 

 以上代码是用python语言在pycharm或Jupyter Notebook环境下完成的,可以根据函数参数进行修改系数

总结一下networkx库绘制网络的缺点:

不能进行手动调节,函数样式较单一,如果绘制较大的网络图不方便

 

 这是我根据我的数据绘制出的网络图,点及边较密集,不能进行手动拆分,需要手动添加点或边,痛点!!!

所以又另寻了一个较好的绘制复杂网络的工具,请参考下一篇博客内容。