绘制网络图基本流程:

  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. 远程访问,文件的压缩,ip地址的设置(9,11,12unit)
  2. oracle查询保留2位小数
  3. shell 命令行实现
  4. mysql免安装数据库用法_MySQL数据库之mysql免安装制作使用说明
  5. ruby语法_Ruby函数(方法)语法
  6. 【CodeForces - 660C】Hard Process (尺取 或 二分+滑窗,前缀和预处理)
  7. python怎么用第三方库_python中第三方库的下载方法
  8. 贝叶斯决策论及朴素贝叶斯分类器
  9. Android开发环境配置
  10. 【19调剂】湖南师范大学2019年信息科学与工程学院硕士研究生复试(含调剂)方案...
  11. Swift --- 下标(subscript)
  12. unity-3d摄像头
  13. android bootload漏洞,一加6手机的Bootloader漏洞可让攻击者控制设备
  14. 2022年秋招提前批总结(海尔智家)
  15. chrome-调试按钮详解
  16. 2018年1月iOS招人心得(附面试题)- 答案整理
  17. android 自定义输入法布局,Android自定义输入法使用方法
  18. esp8266 mixly blynk远程控制 + NTP+天气预报及一体 智能钟
  19. 关于elemen-ui Carousel走马灯图片不显示的问题
  20. 聊聊让开发头疼的一句话需求那些事

热门文章

  1. 图床程序 php,开源免费PHP图床程序–Qchan
  2. uniapp 埋点(友盟)
  3. defer=defer
  4. 被电动牙刷改变的人生,他现在是拥有百万粉丝的网红
  5. java图书馆登陆代码_图书馆系统(登录设计)
  6. OpenShift架构
  7. altium designer芯片引脚间距规则过小
  8. Linux运维:现状、入门和未来之路【警醒自己】
  9. 软件外包故事 - 术业有专攻
  10. .NET6 使用 AutoFac (落地)