作者 | yyl424525
来源 | CSDN博客
文章目录
1. 简介
安装
支持四种图
绘制网络图基本流程
2. Graph-无向图
节点
边
属性
有向图和无向图互转
3. DiGraph-有向图
一些精美的图例子
环形树状图
权重图
Giant Component
Random Geometric Graph 随机几何图
节点颜色渐变
边的颜色渐变
Atlas
画个五角星
Club
画一个多层感知机
绘制一个DNN结构图
一些图论算法
最短路径
4. 问题
一些其他神经网络绘制工具列表
5. 参考
1 简介
networkx是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。
利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
networkx支持创建简单无向图、有向图和多重图(multigraph);内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用。
networkx以图(graph)为基本数据结构。图既可以由程序生成,也可以来自在线数据源,还可以从文件与数据库中读取。
安装
安装的话,跟其他包的安装差不多,用的是anaconda就不用装了。其他就用pip install networkx。
查看版本:
1>>> import networkx
2>>> networkx.__version__
3'1.11'
升级
1pip install --upgrade networkx
下面配合使用的一些库,可以选择性安装:
后面可能用到pygraphviz,安装方法如下(亲测有效):
1sudo apt-get install graphviz
2sudo apt-get install graphviz libgraphviz-dev pkg-config
3sudo apt-get install python-pip python-virtualenv
4pip install pygraphviz
windows的安装参考这篇博客:https://blog.csdn.net/fadai1993/article/details/82491657#2____linux_9
安装cv2:
1pip install opencv-python #安装非常慢,用下面的方式,从清华源下载
2pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
支持四种图
Graph:无多重边无向图
DiGraph:无多重边有向图
MultiGraph:有多重边无向图
MultiDiGraph:有多重边有向图
空图对象的创建方式
1import networkx as nx
2G=nx.Graph
3G=nx.DiGraph
4G=nx.MultiGraph
5G=nx.MultiDiGraph
6G.clear #清空图
绘制网络图基本流程
导入networkx,matplotlib包
建立网络
绘制网络 nx.draw
建立布局 pos = nx.spring_layout美化作用
最基本画图程序
1import import networkx as nx #导入networkx包
2import matplotlib.pyplot as plt
3G = nx.random_graphs.barabasi_albert_graph(100,1) #生成一个BA无标度网络G
4nx.draw(G) #绘制网络G
5plt.savefig("ba.png") #输出方式1: 将图像存为一个png格式的图片文件
6plt.show #输出方式2: 在窗口中显示这幅图像
networkx 提供画图的函数
1draw(G,[pos,ax,hold])
2draw_networkx(G,[pos,with_labels])
3draw_networkx_nodes(G,pos,[nodelist])绘制网络G的节点图
4draw_networkx_edges(G,pos[edgelist])绘制网络G的边图
5draw_networkx_edge_labels(G, pos[, …]) 绘制网络G的边图,边有label
6—有layout 布局画图函数的分界线—
7draw_circular(G, **kwargs) Draw the graph G with a circular layout.
8draw_random(G, **kwargs) Draw the graph G with a random layout.
9draw_spectral(G, **kwargs)Draw the graph G with a spectral layout.
10draw_spring(G, **kwargs)Draw the graph G with a spring layout.
11draw_shell(G, **kwargs) Draw networkx graph with shell layout.
12draw_graphviz(G[, prog])Draw networkx graph with graphviz layout.
networkx 画图函数里的一些参数
pos(dictionary, optional): 图像的布局,可选择参数;如果是字典元素,则节点是关键字,位置是对应的值。如果没有指明,则会是spring的布局;也可以使