文章目录

  • 1. 安装Networkx
  • 2. Networkx的基本使用
    • 2.1 导入networkx
    • 2.2 创建Graph
    • 2.3 给Graph添加边
    • 2.3 Graph基本信息获取
    • 2.4 Graph的绘制
    • 2.5 Graph的其他内置算法
  • 3 其他
    • 3.1 read_edgelist( )

Networkx是一个Python的包,可以用来创建和处理复杂的图网络结构。

中文教程: https://www.osgeo.cn/networkx/install.html
英文教程: https://networkx.org/documentation/stable/install.html

1. 安装Networkx

# 使用pip安装
pip install networkx# 使用conda安装
conda install networkx

2. Networkx的基本使用

2.1 导入networkx
import networkx as nx
2.2 创建Graph
G = nx.Graph()          # 无向图
G = nx.DiGraph()        # 有向图
G = nx.MultiGraph()     # 多重无向图
G = nx.MultiDigraph()   # 多重有向图
G.clear()               # 清空图

根据定义,Graph 是一组节点(顶点)和已识别的节点对(称为边、链接等)的集合。在NetworkX中,节点可以是任何 hashable 对象,例如文本字符串、图像、XML对象、另一个图形、自定义节点对象等。

2.3 给Graph添加边
G.add_edge(1, 2)             # default edge data=1
G.add_edge(2, 3, weight=0.9) # specify edge data
# 如果是边有许多的权,比如有长度和宽度的属性,那么:
G.add_edge(n1, n2, length=2, width=3)elist = [(1, 2), (2, 3), (1, 4), (4, 2)]
G.add_edges_from(elist)
elist = [('a', 'b', 5.0), ('b', 'c', 3.0), ('a', 'c', 1.0), ('c', 'd', 7.3)]
G.add_weighted_edges_from(elist)# 如果给结点的名称是其它符号,想离散化成从x开始的数字标记,那么:
G = nx.convert_node_labels_to_integers(G, first_label=x)
2.3 Graph基本信息获取
nx.info(G) # 图信息的概览
G.number_of_nodes()
G.number_of_edges()
# 获取和节点idx连接的边的attr属性之和
G.in_degree(idx, weight='attr')# 如果想知道某个结点相连的某个边权之和:
DG.degree(nodeIdx, weight='weightName')# 获取结点或者边的属性集合,返回的是元组的列表
G.nodes.data('attrName')
G.edges.data('attrName')# 获取n1 n2的边的length权重,那么:
G[n1][n2]['length']
# 如果是有重边的图,选择n1,n2第一条边的length权重,则:
G[n1][n2][0]['length']# 获取n1结点的所有邻居
nx.all_neighbors(G, n1)# 判断图中n1到n2是否存在路径
nx.has_path(G, n1, n2)
# 根据一个结点的list,获取子图
subG = nx.subgraph(G, nodeList)
2.4 Graph的绘制
# 最简单的绘制
import matplotlib.pyplot as plt
nx.draw(G)
plt.show()# 设置其他相关参数
nx.draw(G,with_labels=True,pos = nx.sprint_layout(G),node_color=color_list,edge_color='k',node_size=100,node_shape='o',linewidths=2,width=1.0,alpha=0.55,style='solid',font_size=9,font_color='k'
)
2.5 Graph的其他内置算法
# 最短路算法 返回最短路的路径列表
nx.shortest_path(G, n1, n2, method='dijkstra')# 以及各种图的算法,比如流,割等等等等,大家可以看文档探索下

3 其他

3.1 read_edgelist( )

Read a graph from a list of edges.
函数定义如下:

 read_edgelist(path, comments='#', delimiter=None, create_using=None, nodetype=None, data=True, edgetype=None, encoding='utf-8'):'''Read a graph from a list of edges.Parameters : path : file or stringFile or filename to write. If a file is provided, it must be opened in ‘rb’ mode. Filenames ending in .gz or .bz2 will be uncompressed.comments : string, optionalThe character used to indicate the start of a comment.delimiter : string, optionalThe string used to separate values. The default is whitespace.create_using : Graph container, optional,Use specified container to build graph. The default is networkx.Graph, an undirected graph.nodetype : int, float, str, Python type, optionalConvert node data from strings to specified typedata : bool or list of (label,type) tuplesTuples specifying dictionary key names and types for edge dataedgetype : int, float, str, Python type, optional OBSOLETEConvert edge data from strings to specified type and use as ‘weight’encoding: string, optionalSpecify which encoding to use when reading file.Returns :   G : graphA networkx Graph or other type specified with create_using'''

样例:

nx.write_edgelist(nx.path_graph(4), "test.edgelist")
G=nx.read_edgelist("test.edgelist")fh=open("test.edgelist", 'rb')
G=nx.read_edgelist(fh)
fh.close()G=nx.read_edgelist("test.edgelist", nodetype=int) G=nx.read_edgelist("test.edgelist",create_using=nx.DiGraph())

Python之Networkx详解相关推荐

  1. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  2. python安装教程windows-windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  3. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  4. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  5. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  6. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  7. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  8. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几 ...

  9. 代码检查规则:Python语言案例详解

    在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...

最新文章

  1. [转载]深入探索.NET框架内部了解CLR如何创建运行时对象
  2. linux配置oracle11G监听及本地网络服务 及 数据库建库
  3. Java NIO系列教程(七) FileChannel
  4. 数据库设计范式深入浅出
  5. 多人互砍游戏的后台服务器的多线程架构
  6. cbow word2vec 损失_Word2Vec的核心思想
  7. oracle长连接超时设置
  8. AT4120-[ARC096D]Sweet Alchemy【贪心,背包】
  9. 码云怎么创建公开的仓库_使用码云或GitHub搭建简单的个人网站(补充hexo搭建博客)...
  10. 设备接入服务,看完这篇给你整的明明白白
  11. java语言编译_java在线编译-编译,java
  12. Linux -lvm -扩容、缩容逻辑卷(针对xfs)
  13. VSCode 下载速度慢问题解决
  14. 2022年草根互联网圈较流行的副业汇总
  15. 智能操控装置在高压开关柜中的应用
  16. 支持APP的打印服务器,TP-LINK双频无线路由器打印服务器客户端软件
  17. [译]GitHub应对1.28宕机事故的前前后后
  18. 一个关于LSTM生成歌词的练习
  19. 用 matplotlib 绘制 3D 时间序列动态图
  20. 思维导图(XMind ZEN)安装教程

热门文章

  1. 【Windows基础要点】端口与注册表
  2. “3·8女王节”限时大促竟让场观、视频号销量翻倍?
  3. GifImage 2.2 控件下载 for Delphi7/6
  4. 扫地机器人作文说明文提纲_扫地机器人说明文500字作文
  5. Linux系统信号量实现生产者-消费者问题
  6. HID Global推出新一代门禁读卡器以及非接触式智能卡(BlackBerry 9900)
  7. [CF817F]MEX Queries
  8. CF817D Imbalanced Array(单调栈+区间交集的处理)
  9. 基于百度地图记录运动轨迹案例分析与实现
  10. html中的pre标签