如何使用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
0
投稿
猜你喜欢
- PHP现在推出5.3.0版本了,不过下载的时候有几个不同版本选择。那就是VC6 X86和VC9 X86。首先我来解答:VC6是什么?VC6就
- 前言本文使用 cpu 的 tensorflow 2.4 完成迁移学习和模型微调,并使用训练好的模型完成猫狗图片分类任务。预训练模型在 NLP
- 1. 折线图折线图(Line Chart)是一种将数据点按照顺序连接起来的图形,也可以看作是将散点图按照X轴坐标顺序链接起来的图形。折线图的
- 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置。确定分页需求:1. 每
- 1.SocketServer模块编写的TCP服务器端代码Socketserver原理图服务端:import SocketServer &nb
- Python中有以下几个基本的数据类型:整数 int字符串 str浮点数 float集合 set列表 list元组 tuple字典 dict
- 导言本文简单介绍了如何从网易财经获取某支股票的价格数据,并根据价格数据画出相应的日K线图。有助于新手了解并使用Python的相关功能。包括列
- 在神经网络入门回顾(感知器、多层感知器)中整理了关于感知器和多层感知器的理论,这里实现关于与门、与非门、或门、异或门的代码,以便对感知器有更
- 在开始聊我在阿里四个月的网页推广设计之前,我想先来说说我对平面设计和网页设计的认识。它们之间的交集。它们都是集艺术创作、电脑技术和数字技术于
- 前言本文实现一个 Python 脚本,用来批量卸载模拟器或者实体机上面的 App 以及清除 LogCat 缓存。开发 Android 的朋友
- 2020年11月22日最新分享pycharm激活码,这次分享的pycharm激活码适用pycharm2020最新版及pycharm2019、
- 数据可视化的时候,常常需要将多个子图放在同一个画板上进行比较,python 的matplotlib包下的subplot可以帮助完成子功能。p
- 如何 在Access中选择指定日期前的记录?我知道,在Access中不能使用DateDiff,那么我们怎样才能选择指定日期前的若干记录呢?虽
- 1.执行cmd命令,不显示执行过程中弹出的黑框def run_cmd( cmd_str='', echo_print=1):
- python中的数字类型工具python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括:1.整数与浮点型,2.复
- 1)利用eval可以将字典格式的字符串与字典户转》》》mstr = '{"name":"yct&quo
- 编程中有时候需要一个初始极大值(或极小值)作为temp,当然可以自定义设置为10000(whatever),不过python中有一个值可以代
- 今天要用python做一个小功能,那就是实现万年历的查询。首先看一下整体感觉实现代码:def is_leap_year(year): &nb
- 概要:要实现点赞功能,需要实现的有:谁进行的点赞、什么时候进行点赞、点赞的对象是谁、每一个对象的点赞数量是多少、点赞过后还需要能够取消点赞,
- #!/usr/bin/python#coding=gbkclass User: def __init__