当前位置: 首页 > news >正文

Python NetworkX

networkx是一个python包,用于创建、操作和研究复杂网络的结构、动态和功能

使用NetworkX,您可以以标准和非标准数据格式加载和存储网络,生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法,绘制网络,

 Gallery — NetworkX 2.8.4 documentation

建图

G = nx.Graph() #定义了一个空图

#有向图
G = nx.DiGraph() 

添加节点

import matplotlib.pyplot as plt
import networkx as nx
G = nx.Graph() #定义了一个空图
G.add_node(1) #增加了1节点
G.add_node('A') #增加了A节点
G.add_nodes_from([2, 3]) #同时加2和3两个节点
nx.draw(G, with_labels=True)
plt.show()

 如果nx.draw不带with_labels=True

 添加边

import matplotlib.pyplot as plt
import networkx as nx

G = nx.Graph() #定义了一个空图
G.add_node(1) #增加了1节点
G.add_node('A') #增加了A节点
G.add_nodes_from([2, 3]) #同时加2和3两个节点
G.add_edges_from([(1,2),(1,3),(2,'A'),(2,3)]) #添加边
G.add_edge(2,'A')
nx.draw(G, with_labels=True)
plt.show()

添加边带权重

G.add_weighted_edges_from([(i, j, weight)])

nx.shell_layouot()  布局

pos=nx.circular_layout(G)          # 生成圆形节点布局
pos=nx.random_layout(G)            # 生成随机节点布局
pos=nx.shell_layout(G)             # 生成同心圆节点布局
pos=nx.spring_layout(G)            # 利用Fruchterman-Reingold force-directed算法生成节点布局
pos=nx.spectral_layout(G)          # 利用图拉普拉斯特征向量生成节点布局
pos=nx.kamada_kawai_layout(G)      #使用Kamada-Kawai路径长度代价函数生成布局

连通分量

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

probability = []
num_ = []
size_of_max = []
for p in np.arange(0.1, 1, 0.1):
    p = round(p, 1)
    probability.append(p)
    ER = nx.random_graphs.erdos_renyi_graph(n=10, p=p)
    num = nx.number_connected_components(ER)
    print(f"Number of connected components of ER graph with p = {p}: {num}")
    num_.append(int(num))
    max_components = max(nx.connected_components(ER), key=len)
    size_of_max.append(len(max_components))
    print(f"The size of largest connected component of ER graph with p = {p}: {len(max_components)}")
    print()
    nx.draw(ER, with_labels = True)
    plt.savefig(f'ER_{p}.jpg')
plt.clf()
plt.plot(probability, num_)
plt.xlabel('p')
plt.ylabel('Number of connected components')
plt.savefig(f"Num_of_connected_components.jpg")
plt.clf()
plt.plot(probability, size_of_max)
plt.xlabel('p')
plt.ylabel('The size of largest connected component')
plt.savefig(f"Size_of_largest_connected_components.jpg")

相关文章:

  • Python复杂网络结构可视化——matplotlib+networkx
  • FairScale
  • Pytorch学习率lr衰减(decay)(scheduler)
  • Pytorch获取中间变量的梯度grad
  • Pytorch梯度裁剪 nn.utils.clip_grad_norm_()
  • Layer Normalization(LN) 层标准化
  • TF_CPP_MIN_LOG_LEVEL
  • Python sys.argv
  • pytorch模型可复现设置(cudnn.benchmark 加速卷积运算 cudnn.deterministic)
  • Python sys.stdout
  • Python vars()函数
  • Python类的self
  • Python输出numpy array带逗号和不带逗号
  • center loss 中心损失
  • torch与lua的关系
  • [译]Python中的类属性与实例属性的区别
  • Babel配置的不完全指南
  • download使用浅析
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • EOS是什么
  • React Native移动开发实战-3-实现页面间的数据传递
  • Vim 折腾记
  • Vue ES6 Jade Scss Webpack Gulp
  • 从零搭建Koa2 Server
  • 基于 Babel 的 npm 包最小化设置
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 浏览器缓存机制分析
  • 由插件封装引出的一丢丢思考
  • # 达梦数据库知识点
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #{}和${}的区别是什么 -- java面试
  • #include
  • (C语言)fgets与fputs函数详解
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (第一天)包装对象、作用域、创建对象
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十六)串口UART
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原)本想说脏话,奈何已放下
  • (转载)(官方)UE4--图像编程----着色器开发
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .form文件_SSM框架文件上传篇
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET处理HTTP请求
  • .net中调用windows performance记录性能信息
  • @EnableWebMvc介绍和使用详细demo
  • @我的前任是个极品 微博分析
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AIGC] Redis基础命令集详细介绍
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析