绘制网络图基本流程:

  1. 导入networkx,matplotlib包
  2. 建立网络
  3. 绘制网络 nx.draw()
  4. 建立布局 pos = nx.spring_layout美化作用
最基本画图程序import import networkx as nx             #导入networkx包
import matplotlib.pyplot as plt
G = nx.random_graphs.barabasi_albert_graph(100,1)   #生成一个BA无标度网络G
nx.draw(G)                               #绘制网络G
plt.savefig("ba.png")           #输出方式1: 将图像存为一个png格式的图片文件
plt.show()                            #输出方式2: 在窗口中显示这幅图像

networkx 提供画图的函数有:

  1. draw(G,[pos,ax,hold])
  2. draw_networkx(G,[pos,with_labels])
  3. draw_networkx_nodes(G,pos,[nodelist])绘制网络G的节点图
  4. draw_networkx_edges(G,pos[edgelist])绘制网络G的边图
  5. draw_networkx_edge_labels(G, pos[, ...]) 绘制网络G的边图,边有label
    ---有layout 布局画图函数的分界线---
  6. draw_circular(G, **kwargs) Draw the graph G with a circular layout.
  7. draw_random(G, **kwargs) Draw the graph G with a random layout.
  8. draw_spectral(G, **kwargs)Draw the graph G with a spectral layout.
  9. draw_spring(G, **kwargs)Draw the graph G with a spring layout.
  10. draw_shell(G, **kwargs) Draw networkx graph with shell layout.
  11. draw_graphviz(G[, prog])Draw networkx graph with graphviz layout.

networkx 画图参数:

  • node_size: 指定节点的尺寸大小(默认是300,单位未知,就是上图中那么大的点)
  • node_color: 指定节点的颜色 (默认是红色,可以用字符串简单标识颜色,例如'r'为红色,'b'为绿色等,具体可查看手册),用“数据字典”赋值的时候必须对字典取值(.values())后再赋值
  • node_shape: 节点的形状(默认是圆形,用字符串'o'标识,具体可查看手册)
  • alpha: 透明度 (默认是1.0,不透明,0为完全透明)
  • width: 边的宽度 (默认为1.0)
  • edge_color: 边的颜色(默认为黑色)
  • style: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)
  • with_labels: 节点是否带标签(默认为True)
  • font_size: 节点标签字体大小 (默认为12)
  • font_color: 节点标签字体颜色(默认为黑色)
  • pos(dictionary, optional): A dictionary with nodes as keys and positions as values.If not specified a spring layout positioning will be computed.

布局指定节点排列形式

  • circular_layout:节点在一个圆环上均匀分布
  • random_layout:节点随机分布
  • shell_layout:节点在同心圆上分布
  • spring_layout: 用Fruchterman-Reingold算法排列节点
  • spectral_layout:根据图的拉普拉斯特征向量排列节
    布局也可用pos参数指定,例如,nx.draw(G, pos = spring_layout(G)) 这样指定了networkx上以中心放射状分布.

其中:spring_layout需要进行计算,拥有以下参数:

pos = nx.spring_layout(G,iterations=200)
  • k controls the distance between the nodes and varies between 0 and 1
  • iterations is the number of times simulated annealing is run
  • default k =0.1 and iterations=50

力引导布局(Force-directed Layout)
力引导布局最早由Peter Eades在1984年的“启发式画图算法”一文中提出,目的是减少布局中边的交叉,尽量保持边的长度一致。此方法借用弹簧模型模拟布局过程:用弹簧模拟两个点之间的关系,受到弹力的作用后,过近的点会被弹开而过远的点被拉近;通过不断的迭代,整个布局达到动态平衡,趋于稳定。其后,“力引导”的概念被提出,演化成力引导布局算法FR(Fruchterman-Reingold算法)——丰富两点之间的物理模型,加入点之间的静电力,通过计算系统的总能量并使得能量最小化,从而达到布局的目的。这种改进的能量模型,可看成弹簧模型的一般化。
参考:https://blog.csdn.net/gdp12315_gu/article/details/48351589

Random Geometric Graph

画随机几何图,找出中心节点并按路径长度染色

import networkx as nx
import matplotlib.pyplot as pltG=nx.random_geometric_graph(200,0.125)
# position is stored as node attribute data for random_geometric_graph
#`random_geometric_graph`(*n*, *radius*, *dim=2*, *pos=None*)[]
#如果两点之间的距离小于redius则相连,建立边
pos=nx.get_node_attributes(G,'pos')# find node near center (0.5,0.5)
dmin=1
ncenter=0
for n in pos:x,y=pos[n]d=(x-0.5)**2+(y-0.5)**2if d<dmin:ncenter=ndmin=d# color by path length from node near center
p=nx.single_source_shortest_path_length(G,ncenter)plt.figure(figsize=(8,8))
nx.draw_networkx_edges(G,pos,nodelist=[ncenter],alpha=0.4)
nx.draw_networkx_nodes(G,pos,nodelist=p.keys(),node_size=80,node_color=p.values(),cmap=plt.cm.Reds_r)plt.xlim(-0.05,1.05)
plt.ylim(-0.05,1.05)
plt.axis('off')
plt.savefig('random_geometric_graph.png')
plt.show()

Networkx使用指南相关推荐

  1. 一文读懂Python复杂网络分析库networkx | CSDN博文精选

    作者 | yyl424525 来源 | CSDN博客 文章目录 1. 简介 安装 支持四种图 绘制网络图基本流程 2. Graph-无向图 节点 边 属性 有向图和无向图互转 3. DiGraph-有 ...

  2. 呆萌的图模型学习——图基本信息 Networkx基本操作(二)

    Networkx是python常用的处理图模型的工具包,可以方便的处理图模型: Github项目主页:https://github.com/networkx/networkx 官网基本教程:https ...

  3. 【Python】如何在Windows操作系统下安装Python和Networkx

    Networkx是一套基于Python的多种网络构造库.因为之前没有学过Python,因此一点点上手,这一篇讲一讲如何在Windows环境下安装Python2.7和Networkx. 首先要澄清一下, ...

  4. python语言适合哪些领域的计算问题数据处理和文本挖掘_R和Python中文本挖掘8大入门指南...

    你希望学习文本挖掘,却发现大多数教程难度跨度很大?或者说你找不到心仪的数据集? 本文将会通过 8 个小贴士帮助你走进文本挖掘之门. 对文本保持好奇 在数据科学世界中,凡事的第一步都是"感到好 ...

  5. 如何安装python_怎么在Windows操作系统下安装Python和Networkx

    Networkx是一套基于Python的多种网络构造库.因为之前没有学过Python,因此一点点上手,这一篇讲一讲如何在Windows环境下安装Python2.7和Networkx. 首先要澄清一下, ...

  6. 深度学习服务器装机指南

    深度学习服务器装机指南(TITAN  V显卡) 基本配置: 系统:ubuntu 16.04 显卡:TITAN V 安装xfce图形界面替换ubuntu自带界面 1.1离线安装 (1)通过apt-get ...

  7. Rasa中文聊天机器人开发指南(1):入门篇

    文章目录 1. Rasa简介与安装 1.1 Rasa简介 1.2 Rasa安装(v1.9.4) 1.1 Ubuntu 16.04环境 1.2 Windows10环境 2. Rasa使用--构建简单聊天 ...

  8. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

最新文章

  1. linux上安装pycharm
  2. MIME文件类型格式--汇总
  3. MongonDB 知识
  4. BZOJ2208 [Jsoi2010]连通数
  5. 虚拟机上怎么配置mysql数据库_Linux虚拟机下安装配置MySQL
  6. 解决在待办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  7. Python 异常后变量的赋值
  8. The requested lisk key xxx could not be resolved as a collection type.
  9. Ubuntu 12.04重启后丢失resolv.conf问题
  10. 匆匆的一瞥,错过了一份正确的BIOS……,安装X64系统时错刷BIOS的彻底死机过程以及解决方法...
  11. 200以内的质数(python)
  12. SQL经典50查询语句案例_3(查询所有同学的学号、姓名、选课数、总成绩)
  13. [云原生专题-24]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - 初始控制节点的安装
  14. sdp ddp内存怎么分_3600超到4266,阿斯加特洛极W3内存超频记录
  15. Wordpress 网站运维 | HTTPS安全证书绑定
  16. dstwo linux n64,次世代?论坛惊现NDS用N64模拟器正在开发?
  17. 天风非银: 券商结算基金的现状和潜力
  18. Elasticsearch 8 正式发布 新特性来了
  19. 毕业论文参考文献格式CSL的生成(有鱼也有渔)
  20. 获取日期(昨天、今天、本周第一天和最后一天、本月第一天和最后一天、本年第一天和最后一天)

热门文章

  1. Vue - 根据输入关键字过滤数组列表(列表搜索功能)
  2. 关于pip下载很慢很慢
  3. 银行从业资格证-个人理财(初级)-多选计算题整理
  4. Flutter集成友盟的SDK
  5. 使用Ventoy安装Deepin系统出现Error verification failed 0x1A Security violation错误
  6. docker中konga的安装
  7. 什么是计算机网络协议叙述协议的三要素,网络协议的含义及三要素是什么
  8. 圣诞节计算机老师贺卡祝福语,给老师的圣诞节贺卡祝福语
  9. SDVOE和传统矩阵的区别
  10. 画PCB时,一些非常好的布线技巧