绘制基本网络图

用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 提供画图的函数有:

  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: 节点标签字体颜色(默认为黑色)
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


import community
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

networkx笔记:绘制基本网络图相关推荐

  1. python画有权重网络图_使用Python的networkx绘制精美网络图教程

    最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...

  2. 用python画关系网络图-使用Python的networkx绘制精美网络图教程

    最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...

  3. 使用networkx绘制社交网络图

    使用networkx绘制社交网络图 lot as plt 代码如下. import networkx as nx # 导入networkx import matplotlib.pyplot as pl ...

  4. networkx笔记

    关于Python语言,如果没有接触过可以找一本Python的语法书来看看(推荐<Python 精要参考(第二版)>,网上有电子版).这个语言很简单易学,只要有点编程基础,几天就可以学会它, ...

  5. 【python教程入门学习】利用Python绘制关系网络图

    我们在做数据可视化时,要展现多个元素之间的相互关系时(比如人物关系图),常会用到网络图. 今天我们就分享一个在 Python 里绘制网络图的库:NetworkX,并显示它的基本操作. 一.Networ ...

  6. 【网络】绘制基本网络图

    绘制基本网络图 用matplotlib绘制网络图 基本流程: 1. 导入networkx,matplotlib包 2. 建立网络 3. 绘制网络 nx.draw() 4. 建立布局 pos = nx. ...

  7. AD20笔记-绘制原理图

    AD20笔记 文章目录 AD20笔记 绘制原理图 设置原理图大小 更新原理图 Nets with only one pin 绘制STM32F103VET6及附近元件原理图 原理图标注 快捷键 AGND ...

  8. R语言绘制社会网络图

    全文阅读:R语言绘制社会网络图| 连享会主页 目录 1. 简介 2. 社会网络基本原理 3. 命令介绍 3.1 layout 布局 3.2 颜色选择 3.3 节点设置 3.4 线条设置 4. 命令实操 ...

  9. R语言如何绘制相互作用网络图(27)

    1.什么是相互作用网络图? 生物网络是复杂网络,也是以系统科学的思想研究生命科学的桥梁.网络中的节点可以是蛋白质,基因,RNA或DNA等,网络的边对应节点之间的物理.生化或功能上的相互作用.生物分子之 ...

最新文章

  1. mysql怎么测试事物_mysql事务简单测试
  2. FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)
  3. C语言 socket shutdown()函数(将与 sockfd 关联的套接字上的全双工连接全部或部分关闭)
  4. Python学会使用虚拟环境——pipenv
  5. android app复制,手机屏幕文字复制App(Text on sreen)
  6. python迭代器使用_Python迭代器的用法
  7. java逻辑编程题_用Java编程解决一道逻辑推理题
  8. 关于韩京清学者的《直线型倒立摆的自抗扰控制设计方案》仿真
  9. 109. 有序链表转换二叉搜索树
  10. 【To Do 难点】最大搜索二叉树
  11. 应用安全_WTS-WAF绕过
  12. apache tomcat linux 配置,linux下apache+tomcat配置
  13. 虚幻学习4---制作实时逼真的毛发【笔记】
  14. linux打印机无法识别usb设备,linux支持usb打印机,不用驱动
  15. 解释一下积分变上限函数
  16. Python 将汉字转为拼音
  17. 2019电大计算机专业英语1答案,2019年最新国家开放大学电大《管理英语4》网络核心课形考网考作业附全答案...
  18. 中国地质大学英语语音学习笔记(四):英语连读——弱读、冠词连读方法(包括元音字母前添加an的原因)和词间辅音加元音的连读方法
  19. ServiceNow获得FedRAMP高基准授权
  20. ios12怎么滑屏解锁_对比苹果iOS12和安卓9.0,相互学习了哪些功能

热门文章

  1. 史上最全云原生全景图解读攻略
  2. 计算机视觉-计算机视觉入坑(一):计算机视觉入坑前的信息采集和了解
  3. 开源扫描仪驱动sane支持的扫描仪列表
  4. 如何使用python进行网站开发?
  5. www.5dkb.com我的电影网站
  6. (搬运)Scott Hanselman 的 2014 年 Windows 平台软件推荐
  7. pageadmin CMS网站建设:母版页的制作及语法说明
  8. 收费企业邮箱能为中小企业带来哪些红利?
  9. 解决云闪付安装postcss-pxtorem报错
  10. Excel VBA 合并不同工作簿的工作表到一个工作簿的不同工作表