如何使用python中的networkx来生成一个图
作者:wh柒八九 发布时间:2022-08-13 05:13:32
标签:python,networkx,生成图
python networkx来生成一个图
使用python提供的第三方的库networkx,networkx是专门用来生成图论和网络科学里面各种图及其各种计算函数的。
(a).如果已知一个图的图形,如何将其生成对应的邻接矩阵,这个在networkx里面提供了函数nx.to_numpy_matrix(G)来完成
(b).如果已知一个图的邻接矩阵,如何将其转化成对应的图形
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 16 20:13:42 2019
@author: Administrator
"""
"""
这个函数的作用是将一个矩阵给转换成一个图,
矩阵以多维列表的形式存在,即列表的列表
此处的转换是针对无向图
根据邻接矩阵得到图之后,我们就可以调用networkx
里面的各种函数来分析图的性质,比如度分布,
平均路径程度,聚类系数等一系列图的拓扑性质
"""
import networkx as nx
def matrix_to_graph():
G = nx.Graph()
#matrix为邻接矩阵,以多维列表的形式存在
matrix = [[0, 1, 1],[1,0,1],[1,1,0]]
nodes = range(len(matrix))
G.add_nodes_from(nodes)
for i in range(len(matrix)):
for j in range(len(matrix)):
if(matrix[i][j] == 1):
G.add_edge(i, j)
position = nx.circular_layout(G)
nx.draw_networkx_nodes(G,position, nodelist=nodes, node_color="r")
nx.draw_networkx_edges(G,position)
nx.draw_networkx_labels(G,position)
print(nx.to_numpy_matrix(G))
matrix_to_graph()
运行结果如下:
networkx随机图生成
导入包
import networkx as nx #导入networkx包
import random #导入random包
import matplotlib.pyplot as plt #导入画图工具包
新建图
G = nx.Graph() #建立无向图
H = nx.path_graph(100) #添加节点
G.add_nodes_from(H) #添加节点
随机概率添加边的函数
def rand_edge(vi,vj,p=0.2): #默认概率p=0.1
probability =random.random()#生成随机小数
if(probability<p): #如果小于p
G.add_edge(vi,vj) #连接vi和vj节点
添加边
i=0
while (i<100):
j=0
while(j<i):
rand_edge(i,j) #调用rand_edge()
j +=1
i +=1
matplotlib画图
连通子图
number_components = nx.number_connected_components(G)
largest_components = max(nx.connected_components(G), key=len)
print("最大连通子图:" + str(largest_components))
print("最大连通子图长度:"+ str(len(largest_components)))
print("连通子图个数: "+str(nx.number_connected_components(G)))
节点的度
nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) #各节点度数之和
degree_max = max(span for n, span in DVweight) #节点最大度数
代码
import networkx as nx #导入networkx包
import random #导入random包
import matplotlib.pyplot as plt
G = nx.Graph()
H = nx.path_graph(100)
G.add_nodes_from(H)
def rand_edge(vi,vj,p=0.2):
probability =random.random()
if(probability<p):
G.add_edge(vi,vj)
i=0
while (i<100):
j=0
while(j<i):
rand_edge(i,j)
j +=1
i +=1
number_components = nx.number_connected_components(G)
largest_components = max(nx.connected_components(G), key=len)
nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) #各节点度数之和
degree_max = max(span for n, span in DVweight)#节点最大度数
print("度数之和: " + str(degree_sum))
print("节点最大度数:" + str(degree_max))
print("最大连通子图:" + str(largest_components))
print("最大连通子图长度:"+ str(len(largest_components)))
print("连通子图个数: "+str(nx.number_connected_components(G)))
nx.draw_networkx(G, with_labels=True)
plt.show()
来源:https://blog.csdn.net/qq_31960623/article/details/100547277


猜你喜欢
- 今天要介绍的是,如何生成一个"继承"多个对象的实例。 比如,现在有一个"动物"对象的构造函数, fu
- 本文实例讲述了mysql存储过程原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是存储过程存储过程的创建存储过程的使用查看存储过程
- 前言WebStorm是一款强大的前端开发软件,vue是当前前端热门技术栈。对于WebStorm默认的配置,它会把vue当成文本文件处理,从而
- 阅读是在网站中的一个很重要的部分,可以说是网站的核心。网站最终要呈现给用户的就是内容。尤其是文本内容。豆瓣豆瓣前段时间小改了一下,页面拉宽,
- DOME<input type="file" @change="upload" ref=&qu
- 简介:MongoEngine 是一个Document-Object Mapper (想一下ORM, 但它是针对文档型数据库),Python通
- 1.数组中已存在两个可直接用来重排序的方法:reverse()和sort()。reverse()和sort()方法的返回值是经过排序后的数组
- 使用Python进行项目开发时,由于不同的项目需要,可能会配置多个开发环境,不同开发环境之间的项目依赖包如果混合在一起,可能会引起意想不到的
- 本文实例讲述了gearman+mysql方式实现持久化操作。分享给大家供大家参考,具体如下:1、为什么要持久化?gearman的job se
- table估计每个跟web打过交道的人都会经常接触到,跟js结合能做出很多不错的体验。这里打算结合js做一个系列,包括一些操作和效果,虽然现
- 一 介绍Python上有一个非常著名的HTTP库——requests,相信大家都听说过,用过的人都说非常爽!现在requests库的作者又发
- 一旦你创建一个 Template 对象,你可以用 context 来传递数据给它。 一个context是一系列变量和它们值的集合。conte
- 1.展开服务器对象-->链接服务器-->右击"新建链接服务器"注意:必须以数据库管理员身份登录(通常也就是s
- 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:#! encoding=UTF-8 class A:
- Tebsorflow开源实现多GPU训练cifar10数据集:cifar10_multi_gpu_train.pyTensorflow开源实
- 0 引言年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领
- 一、根据条件在序列中筛选数据假设有一个数字列表 data, 过滤列表中的负数data = [1, 2, 3, 4, -5]# 使用列表推导式
- 同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。 使用的数据库
- Git分支详解参考:分支管理组成1.1、master主干在版本管理中,代码库应该仅有一个主干。此主干是和当前生产保持一致的,是可用的、稳定的
- 安装过程询问一般 y 就可以了1 安装1.1 下载wget https://dev.mysql.com/get/mysql-apt-conf