转自:http://www.cnblogs.com/huiyang865/p/5677449.html

绘制基本网络图

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

1 import networkx as nx             #导入networkx包
2 import matplotlib.pyplot as plt
3 G = nx.random_graphs.barabasi_albert_graph(100,1)   #生成一个BA无标度网络G
4 nx.draw(G)                               #绘制网络G
5 plt.savefig("ba.png")           #输出方式1: 将图像存为一个png格式的图片文件
6 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,不带标签的网络图。

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))

循环结束后通过颜色来标识不同社区.

Python networkx 绘制网络图简介相关推荐

  1. 【科学文献计量】networkx绘制网络图的基本属性,图形读写以及无向/有向图形绘制详解

    networkx绘制网络图基本属性,图形读写以及无向/有向图形绘制详解 1 Properties of graph 图像属性 1.1 案例 1.2 代码详解 2 Read and write grap ...

  2. 使用networkx绘制网络图及模块使用

    使用networkx绘制网络图及模块使用 主要练习了包和模块的生成,并且学习了各种可视化的操作方法,包括networkx库(对于网络的生成).使用matplotlib.seaborn画柱形图,折线图等 ...

  3. python画有权重网络图_Python可视化之NetworkX绘制网络图\节点关系

    除了Gephi,python的NetworkX也是绘制网络图的利器,后者功能更强大,能兼容Gephi的一些绘制结果,但相应学习成本也更高点.另外似乎还有一个igraph-python库,后期可以学习一 ...

  4. networkx绘制网络图的知识点

    1.创建一个空的无向图 import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() G.clear() # 清空图上的元素 ...

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

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

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

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

  7. [python] 基于NetworkX实现网络图的绘制

    文章目录 NETWORK CHART(网络图) 1. 自pandas基础网格图绘制 Basic Network from pandas data frame 2. 自定义NetworkX图形外观 Cu ...

  8. 使用NetworkX绘制深度神经网络结构图(Python)

    本文将展示如何利用Python中的NetworkX模块来绘制深度神经网络(DNN)结构图. 已知我们创建的DNN结构图如下: 该DNN模型由输入层.隐藏层.输出层和softmax函数组成,每一层的神经 ...

  9. Python networkx 根据节点坐标来画网络图

    上篇请移步到python 使用networkx绘制带权无向图和带权有向图,以及标注特定路径_networkx 有向图_水w的博客-CSDN博客 python networkx图可视化 基础知识以及解决 ...

最新文章

  1. MySQL:Innodb DB_ROLL_PTR指针解析
  2. BG.Hive - part1
  3. 探索 .NET Core 依赖注入的 IServiceCollection
  4. MAX535 单路13位DAC 模拟SPI驱动
  5. POJ 2255 Tree Recovery(已知前序中序,求后序)
  6. 如何c51和mdk共存兼容_2020年网站如何做seo优化
  7. Excel表中的数据导入到数据库中
  8. 使用ENVI下载雷达图像参考DEM的方法
  9. iphone 3G 刷机错误解决集锦
  10. 激光雷达点云数据处理
  11. 北斗导航 | dBW/dBm/W快速换算方法
  12. 遥感中为什么要使用微波
  13. “美国人工智能倡议”解读
  14. 邮箱显示exchange账号服务器错误,Exchange服务器刚开始用就总是出错!
  15. 《Intel汇编语言程序设计》环境搭建
  16. IceSword V1.22 Final 冰刃
  17. 系统盘无损迁移至固态硬盘(机械硬盘)
  18. 春招+秋招核心面试问题
  19. 鸿蒙:这个备胎不太冷
  20. 给有从事软件研发想法的在校大学生的一丝建议

热门文章

  1. connect to server 192.168.xxx.xxx:22122 fail 使用FastDFS测试上传文件时报错
  2. Unity3d 等比例缩放小地图制作
  3. 纽约时报竞赛获奖秘诀是什么?
  4. 独孤思维:从《狂飙》高启强身上获得的赚钱机会
  5. ntp服务器udp协议,windows2003 2008 2012 2016 2019封UDP协议服务器自动同步时间
  6. 一条Javascript命令玩转EOS, js4eos开源了
  7. 树莓派自动化测试工具LTF
  8. 隧道人员定位考勤软件详细介绍
  9. 使用.NET 框架压缩版开发Windows Mobile 2003 for Smartphone
  10. C语言结构体数组定义及赋值