python学习(32)---networkx

Posted 咫片炫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习(32)---networkx相关的知识,希望对你有一定的参考价值。

一、networkx介绍

NetworkX提供图形(或网络)的数据结构以及图形算法,生成器和绘图工具。

函数,方法和变量名是lower_case_underscore(小写,下划线表示单词之间的空格)。

 

二、基础

1、导入模块

import networkx as nx

2、图/网络

图的类型

  • Graph:无多重边无向图。忽略两个节点之间的多个边,允许节点自身成环。
  • DiGraph:无多重边有向图
  • MultiGraph:有多重边无向图,允许在成对的节点之间存在多个无向边。
  • MultiDIGraph:有多重边有向图

所有图类均允许任何哈希对象作为节点。可哈希对象包括字符串,元组,整数等。如权重和标签之类的任意边属性都可以与边相关联。

   G = nx.Graph()#创建空的网络图
   G = nx.DiGraph()
   G = nx.MultiGraph()
   G = nx.MultiDiGraph()

图的创建:(三种方式)

  1. 图生成器,如例如binomial_graph和powerlaw_graph
  2. 从文本源中加载数据,如nx.read_adjlist
  3. 自主创建空图并添加点和边

 

3、节点和边

  • 节点:整数 / 字符串 / 描述节点的数据结构
  • 边:关键字/值对【可使用除‘weight‘以外的任何关键字来命名属性,可通过此关键字查询边】
#添加点
G.add_node(a)#添加点a
G.add_node(1,1)#用坐标来添加点
G.add_node(math.cos) # any hashable can be a node

#添加边
G.add_edge(x,y)#添加边,起点为x,终点为y,默认边值为1
G.add_edge(1,3,weight=0.9)
#添加边,起点为1,终点为2,权重值为0.9
G.add_edge(‘y‘,‘x‘,function=math.cos) #Edge attributes can be anything
G.add_weight_edges_from([(x,y,1.0)])#第三个输入量为权值
#也可以
list = [[(a,b,5.0),(b,c,3.0),(a,c,1.0)]
G.add_weight_edges_from([(list)])

 

4、图形的显示

需要导入matplotlib
import matplotlib.pyplot as plt

nx.draw(G)
#nx.draw_networkx(G)

plt.show()

#若想让图形更精美
nx.draw(G,pos = nx.random_layout(G),node_color = ‘b‘,edge_color = ‘r‘,with_labels = True,font_size =18,node_size =20)

pos 指的是布局 主要有spring_layout , random_layout,circle_layout,shell_layout。node_color指节点颜色,有rbykw ,同理edge_color.
with_labels指节点是否显示名字,size表示大小,font_color表示字的颜色。

 

以上是关于python学习(32)---networkx的主要内容,如果未能解决你的问题,请参考以下文章

python-networkx学习

Python 学习 第十六篇:networkx

如何在networkx python中找到长度等于某个数字的最短路径的节点?

使用 python 和 networkx 进行大图可视化

在python中查找networkx图是不是可追溯

NetworkX:Python图与网络模型基础