【网络】绘制基本网络图
绘制基本网络图
用matplotlib绘制网络图
基本流程:
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 提供画图的函数有:
draw
(G,[pos,ax,hold])draw_networkx
(G,[pos,with_labels])draw_networkx_nodes
(G,pos,[nodelist]) 绘制网络G的节点图draw_networkx_edges
(G,pos[edgelist]) 绘制网络G的边图draw_networkx_edge_labels
(G, pos[, ...]) 绘制网络G的边图,边有label
---有layout 布局画图函数的分界线---draw_circular(G, **kwargs)
Draw the graph G with a circular layout.draw_random(G, **kwargs)
Draw the graph G with a random layout.draw_spectral(G, **kwargs)
Draw the graph G with a spectral layout.draw_spring(G, **kwargs)
Draw the graph G with a spring layout.draw_shell(G, **kwargs)
Draw networkx graph with shell layout.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
: 节点标签字体颜色(默认为黑色)
e.g. nx.draw(G,node_size = 30, with_label = False)
绘制节点的尺寸为30,不带标签的网络图。
布局指定节点排列形式
pos = nx.spring_layout
建立布局,对图进行布局美化,networkx 提供的布局方式有:
- circular_layout:节点在一个圆环上均匀分布
- random_layout:节点随机分布
- shell_layout:节点在同心圆上分布
- spring_layout: 用Fruchterman-Reingold算法排列节点(这个算法我不了解,样子类似多中心放射状)
- spectral_layout:根据图的拉普拉斯特征向量排列节
布局也可用pos参数指定,例如,nx.draw(G, pos = spring_layout(G)) 这样指定了networkx上以中心放射状分布.
绘制划分后的社区
先看一段代码,代码源自site
partition = community.best_partition(User)
size = float(len(set(partition.values())))
pos = nx.spring_layout(G)
count = 0.for com in set(partition.values()) :count = count + 1.list_nodes = [nodes for nodes in partition.keys()if partition[nodes] == com] nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 50,node_color = str(count / size))nx.draw_networkx_edges(User,pos,with_labels = True, alpha=0.5 )
plt.show()
communit.best_partition 是社区划分方法,算法是根据Vincent D.Blondel 等人于2008提出,是基于modularity optimization的heuristic方法.
partition的结果存在字典数据类型:
{'1': 0, '3': 1, '2': 0, '5': 1, '4': 0, '6': 0}
单引号里的数据是key,也就是网络中节点编号。
冒号后面的数值,表示网络中节点的编号属于哪个社区。也就是社区标号。如'6': 0
表示6节点属于0社区
list_nodes = [nodes for nodes in partition.keys()if partition[nodes] == com]
每次循环list_nodes结果是社区i对应的用户编号。
如第一次循环结果是com = 0, list_nodes= ['1','2','4','6']
第二次循环的结果是com = 1, list_nodes = ['3','6']
这样每次循环,画出一个社区的所有节点:
nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 50,node_color = str(count / size))
循环结束后通过颜色来标识不同社区
http://segmentfault.com/a/1190000000527216
【网络】绘制基本网络图相关推荐
- 【python教程入门学习】利用Python绘制关系网络图
我们在做数据可视化时,要展现多个元素之间的相互关系时(比如人物关系图),常会用到网络图. 今天我们就分享一个在 Python 里绘制网络图的库:NetworkX,并显示它的基本操作. 一.Networ ...
- python画有权重网络图_使用Python的networkx绘制精美网络图教程
最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...
- networkx笔记:绘制基本网络图
绘制基本网络图 用matplotlib绘制网络图 基本流程: 1. 导入networkx,matplotlib包 2. 建立网络 3. 绘制网络 nx.draw() 4. 建立布局 pos = nx. ...
- R语言绘制社会网络图
全文阅读:R语言绘制社会网络图| 连享会主页 目录 1. 简介 2. 社会网络基本原理 3. 命令介绍 3.1 layout 布局 3.2 颜色选择 3.3 节点设置 3.4 线条设置 4. 命令实操 ...
- R语言如何绘制相互作用网络图(27)
1.什么是相互作用网络图? 生物网络是复杂网络,也是以系统科学的思想研究生命科学的桥梁.网络中的节点可以是蛋白质,基因,RNA或DNA等,网络的边对应节点之间的物理.生化或功能上的相互作用.生物分子之 ...
- 用python画关系网络图-使用Python的networkx绘制精美网络图教程
最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...
- 使用networkx绘制社交网络图
使用networkx绘制社交网络图 lot as plt 代码如下. import networkx as nx # 导入networkx import matplotlib.pyplot as pl ...
- python绘制社会关系网络图_python networkx 包绘制复杂网络关系图的实现
1. 创建一个图 import networkx as nx g = nx.Graph() g.clear() #将图上元素清空 所有的构建复杂网络图的操作基本都围绕这个g来执行. 2. 节点 节点的 ...
- python绘制社会关系网络图_文本分析之制作网络关系图——Python
今天给大家带来我一个脚本,用来分析社会网络关系. 这个图我没有用到gephi或者其他的工具,是我用python纯脚本运行出来的.简单的实现了封装,大家有兴趣可以下载下脚本,运行下. 原理知识 我就简单 ...
最新文章
- Hashmap,Set,Map,List,ArrayList的区别
- finished with exit code -1073740791 (0xC0000409)解决方案
- 【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )
- how many libraries within Cambridge?
- PAT (Basic Level) Practice (中文)C++ python 语言实现 —— 题解目录
- Linux基本命令(1)管理文件和目录的命令
- [Python3] 015 冰冻集合的内置方法
- java 点餐界面_Java小项目点餐系统(二)之服务端 | 学步园
- 团队项目(NABC分析)
- 情爱难剪断,菩提树下悟佛缘
- 美国商务部发布软件物料清单 (SBOM) 的最小元素(上)
- Wss3入门(2):设置匿名访问包括匿名阅读和匿名评论,修改评论的字段等。
- 将数字转为ASCII码
- 第七章、TPP2(G2)
- 淘宝/天猫平台API 接口及API文档
- 智能机器人编程游戏robocode的运行代码简析
- nnUNet一个医学图像分割神仙算法
- iPhone开发初试锋芒 一个简单的iPhone播放器 --紫枫凝潇烟
- fun函数声明的一些问题和编写函数的一个问题
- hadoop配置文件详解系列(一)-core-site.xml篇
热门文章
- 【懒人必备】智能窗帘机器人,告别手动拉窗帘——软件功能实现篇
- 同方打造绿色冬奥新体验;安博教育与麒麟软件签署全面合作协议;趣链科技与成都高新区打造链上授权办事服务 | 全球TMT...
- IDC报告:从IaaS到PaaS,阿里云主导云计算市场
- 杨振宁:通过我的求学及研究经历,获得了这些启发与感受
- wrod2010软件计算机在线考试,全国计算机高新技术考试,office2010高级-试题1
- 高新技术计算机网络管理员,计算机信息高新技术考试之网络管理员
- Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
- C语言之static关键字详解
- 计算机辅助合成药物,计算机辅助药物设计
- PointNet代码详细解释(Pytorch版本)