
文章目录简介无向图基础图简介NetworkX是 Python 生态中最著名、应用最广泛的图论与复杂网络分析开源库。它的核心使命是提供一套直观、灵活且功能全面的 API用于创建、操作、分析和可视化复杂网络图的结构、动态与功能。这个库十分著名在pip上比matplotlib下载量还大Anaconda也包含该库可以直接使用。官方提供的pip安装命令如下后面的[default]选项用于安装相关依赖。pip install networkx[default]无向图直观来说图论中的图(graph)就是把一群节点连接起来之后所形成的结构用于连接节点的线既可以有方向和权重也可以没有。下面就是一张简单的图。这个图包含四个节点1 , 2 , 3 , 4 1,2,3,41,2,3,45个边( 1 , 2 ) , ( 1 , 3 ) , ( 1 , 4 ) , ( 4 , 2 ) , ( 3 , 2 ) (1, 2), (1, 3), (1, 4), (4, 2), (3, 2)(1,2),(1,3),(1,4),(4,2),(3,2)其生成和可视化代码如下。importnetworkxasnximportmatplotlib.pyplotasplt plt.rcParams[font.sans-serif]Times New RomanGnx.Graph()G.add_edges_from([(1,2),(1,3),(1,4),(4,2),(3,2)])nx.draw(G,with_labelsTrue,node_colorlightblue)plt.show()【Graph】是networkx中最简单的图类从上面的可视化结果可知其并不包含方向。【add_edges_from】顾名思义是一种批量添加边的方法其输入参数是边的列表列表中每一项都是一个边每个边包含两个节点。节点可以是数值也可以是字符串其仅代表标签或序号而不包含任何量化的含义。【draw】是networkx提供的可视化工具使用非常便捷。基础图networkx提供了四种基础图分别是无向单图【Graph】有向单图【DiGraph】无向多重图【MultiGraph】有向多重图【MultiDiGraph】仅从边与节点的关系出发这四种图的差异如下测试代码为e[(1,1),(1,2),(2,1),(2,3)]G[nx.Graph(),nx.DiGraph(),nx.MultiGraph(),nx.MultiDiGraph()][g.add_edges_from(e)forginG]pos{1:(0,0),2:(1,0),3:(0.5,0.9)}fori,ginenumerate(G,1):plt.subplot(2,2,i)s[farc3,rad{0.1ifj%2else-0.1}forjinrange(g.number_of_edges())]nx.draw(g,pos,with_labelsTrue,node_colorlightblue,connectionstyles,arrowsTrue,arrowstyle-|ifg.is_directed()else-)plt.title(type(g).__name__)plt.show()