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

networkx 标签_NetworkX:是一个简单、多样化、能快速生成网络图形的Python库

1 说明:

=====

1.1 NetworkX是一个Python包,用于创建、操纵和研究复杂网络的结构、以及学习复杂网络的结构、功能及其动力学。

1.2 NetworkX测试的代码覆盖率超过90%,是一个多样化,易于教学,能快速生成图形的Python平台。

1.3 NetworkX提供了适合各种数据结构的图表、二合字母和多重图,还有大量标准的图算法,网络结构和分析措施,可以产生随机网络、合成网络或经典网络,且节点可以是文本、图像、XML记录等,并提供了一些示例数据(如权重,时间序列)。

1.4 附加知识:matplotlib的中文设置的另外一种方法。

1f6c0570215e5718b8d6992b69febd1c.png

2 准备:

=====

2.1 官网:

https://github.com/networkx/networkxhttp://networkx.github.io/https://pypi.org/project/networkx/https://networkx.github.io/documentation/stable/tutorial.html

2.2 安装:

pip install networkx

3 Erdos Renyi:

===========

3.1 代码:随机图

import matplotlib.pyplot as plt #用来显示图from networkx import nxn = 10  # 10 nodes=节点e = 20  # 20 edges=边线#随机图形G = nx.gnm_random_graph(n, e)#nx.draw(G) #默认节点node内不显示阿拉伯数字nx.draw(G,with_labels=True)plt.show()

3.2 图:

4eacf74e8db535c0575d2615b136f813.png

4 Node Colormap:

==============

4.1 代码:

import matplotlib.pyplot as pltimport networkx as nx#24,就是n=node,画椭圆G = nx.cycle_graph(24)#位置,iterations=迭代,建议200,否则就不是椭圆pos = nx.spring_layout(G, iterations=200)#cmap=代表colormap=颜色图#nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Blues)#nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Reds)#with_labels=True 在节点内显示阿拉伯数字标签nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Reds,with_labels=True)plt.show()

4.2 图:

f6085261a660f7bc65aaa931ac6a90c6.png

5 无向图、添加子图:

=======

5.1 代码:

import networkx as nximport matplotlib.pyplot as plt G = nx.Graph() #建立一个空的无向图GG.add_node('a')  #添加一个节点1G.add_nodes_from(['b','c','d','e'])  #加点集合#添加子图'''G.add_node(0)   H=[1,2,3,4,5,6,7,8,9] G.add_nodes_from(H)     '''#等同上面#H=[0,1,2,3,4,5,6,7,8,9]  #方法一H=range(10)  #方法二:python知识复习G.add_nodes_from(H)   #显示节点标签nx.draw(G, with_labels=True)plt.show()

5.2 图:

eabc457d1c589c2f1d65854e8e58f9ed.png

6 中文显示:

=========

6.1 matplotlib另外一种中文显示设置。

6.2 本机操作示范:

6.2.1 在root下进入本机文件夹:注意本机为linux操作系统,window大同小异。

file:///usr/local/python3.8/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

6.2.2 将自己的中文字体:hwfs.ttf(华文仿宋字体==用来显示中文的)放在ttf文件夹下。

6.2.3 因为matplotlib默认调用的为DejaVuSans.ttf字体文件,所以先将DejaVuSans.ttf复制一个,备份,取名为DejaVuSans_beifen.ttf,然后将hwfs.ttf改名为DejaVuSans.ttf,就可以显示中文了,超级简单。

7 人物关系权重图:weighted_graph

===========================

7.1 数据是虚拟的,这个很实用,人物关系权重图。

7.2 代码:

import matplotlib.pyplot as pltimport networkx as nxG = nx.Graph()#节点关系和权重G.add_edge("李白", "王维", weight=0.6)G.add_edge("李白", "杜甫", weight=0.2)G.add_edge("杜甫", "苏轼", weight=0.1)G.add_edge("杜甫", "王昌龄", weight=0.7)G.add_edge("杜甫", "杜牧", weight=0.9)G.add_edge("李白", "苏轼", weight=0.3)#定义权重与人物关系的指标赋值elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d["weight"] > 0.5]esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d["weight"] <= 0.5]#建立布局 pos = nx.spring_layout美化作用pos = nx.spring_layout(G)#节点布局和大小设置nx.draw_networkx_nodes(G, pos, node_size=700)#边的设置和宽度设置等nx.draw_networkx_edges(G, pos, edgelist=elarge, width=6)#style: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)nx.draw_networkx_edges(G, pos, edgelist=esmall, width=6, alpha=0.5, edge_color="b", style="dashed")# labels标签名和字体大小设置nx.draw_networkx_labels(G, pos, font_size=10)  #已经设置好中文显示#关闭网格线,不显示坐标轴线plt.axis("off")plt.show()

7.3 图:

2bb9c6086d53bc7e6b28331d4650b981.png

8 高级版:

=======

8.1 代码省略。

8.2 结合flask、d3.js的网页动画的networkx。

49bdfa1a0b7cfb750d1ad6196af7dddd.gif

===自己整理并分享出来===

喜欢的人,请点赞、关注、评论、转发和收藏。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 华为三层交换机配置步骤_华为交换机Trunk配置
  • python 遍历所有文件夹和子文件夹_Python 遍历子文件和所有子文件夹的代码实例...
  • redis模糊查询key前缀_Redis内存数据监控实战
  • completablefuture 线程池_线程池ForkJoinPool简介
  • 判断多个数据是否是两个素数相乘_循环结构程序举例2素数的判断
  • chrome 验证码识别 扩展_chrome插件市场国内无法打开,我来教你如何安装插件
  • python深度神经网络_PyTorch进阶:深度神经网络中的前馈过程(图解分析)
  • python判断能否组成三角形_如何用PYTHON判断三角形的类型 需要技巧
  • 查看python安装成功的命令_Python sqlite3模块 安装查询命令等使用讲解
  • python输入半径计算公式_python练习:取输入半径的周长和面积
  • python重命名文件或目录_命令和Python重命名文件
  • python 列表_Python 算法 09 -- 散列表
  • python粘性拓展_拓展Python Markdown
  • ping不通服务器_服务器远程桌面不上不要急,这就告诉你原因
  • 钢笔墨水能否代替打印机墨水_喷墨打印机该用染料墨水还是颜料墨水,区别在哪里?...
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • android图片蒙层
  • Angular 响应式表单之下拉框
  • java2019面试题北京
  • js学习笔记
  • MySQL几个简单SQL的优化
  • PhantomJS 安装
  • Swift 中的尾递归和蹦床
  • uni-app项目数字滚动
  • 关于 Cirru Editor 存储格式
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端自动化解决方案
  • 提醒我喝水chrome插件开发指南
  • 王永庆:技术创新改变教育未来
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #git 撤消对文件的更改
  • #Java第九次作业--输入输出流和文件操作
  • #Linux(权限管理)
  • (BFS)hdoj2377-Bus Pass
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (利用IDEA+Maven)定制属于自己的jar包
  • (原)Matlab的svmtrain和svmclassify
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)scrum常见工具列表
  • (转)原始图像数据和PDF中的图像数据
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ******之网络***——物理***
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .jks文件(JAVA KeyStore)
  • .net 7和core版 SignalR
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 指南:抽象化实现的基类