举例

import networkx as nx
import matplotlib.pyplot as plt

我们先通过nx.erdos_renyi_graph(10, 0.15)方法随机生成图像

er = nx.erdos_renyi_graph(10, 0.15)
nx.draw(er,node_size=300,with_labels = True,pos = nx.spring_layout(er),node_color = 'r')

pos常用自动布局函数

上图是由nx.draw(),核心布局参数是pos,接下来让我们试一试其他常用自动生成节点位置的函数:

pos=nx.circular_layout(G)          # 生成圆形节点布局
pos=nx.random_layout(G)            # 生成随机节点布局
pos=nx.shell_layout(G)             # 生成同心圆节点布局
pos=nx.spring_layout(G)            # 利用Fruchterman-Reingold force-directed算法生成节点布局
pos=nx.spectral_layout(G)          # 利用图拉普拉斯特征向量生成节点布局
pos=nx.kamada_kawai_layout(G)      #使用Kamada-Kawai路径长度代价函数生成布局

实现

labels={}
for node in er.nodes():labels[node]=nodepos_list = [nx.circular_layout(er), nx.random_layout(er), nx.shell_layout(er),nx.spring_layout(er), nx.spectral_layout(er), nx.kamada_kawai_layout(er)]    plt.rcParams['figure.figsize']= (12, 6)      # 设置画布大小
for i,pos in enumerate(pos_list):ax1 = plt.subplot(2,3,i+1)nx.draw_networkx_nodes(er,pos)               # 画节点nx.draw_networkx_edges(er,pos)               # 画边nx.draw_networkx_labels(er,pos,labels)       # 画标签 plt.axis('off')                             # 去掉坐标刻度
plt.show()

自定义布局

在图节点没有实际意义的时候,确实可以这样偷懒自动生成,但很多情况下是需要我们自己设置相应的位置的。
接下来我们看看pos什么样的数据,如何辅助定位的:

pos = nx.circular_layout(er)
pos
{0: array([1.0000000e+00, 1.4702742e-08]),1: array([0.809017  , 0.58778526]),2: array([0.30901698, 0.95105655]),3: array([-0.30901702,  0.95105649]),4: array([-0.80901699,  0.58778526]),5: array([-9.99999988e-01, -7.27200340e-08]),6: array([-0.80901693, -0.58778529]),7: array([-0.30901711, -0.95105646]),8: array([ 0.30901713, -0.95105646]),9: array([ 0.80901694, -0.58778529])}

懂了,就是字典形式,node(key):coordinate(value).每个节点对应一个坐标。

plt.rcParams['figure.figsize']= (8, 8)      # 设置画布大小
pos={1: [1,6],2:[1,7],3:[5,2],4:[3,2],5:[2.5,2.5],6:[1,3],7:[1,2],8:[3,3],9:[5,4],0:[5,5]}
nx.draw(er,node_size=1000,with_labels = True,pos = pos,node_color = 'r')
plt.show()

利用nx.draw_networkx_nodes()和nx.draw_networkx_edges()画图

nx.draw_networkx_nodes(er,pos,node_size=1000,node_color = 'r',label = True)               # 画节点
nx.draw_networkx_edges(er,pos)               # 画边
nx.draw_networkx_labels(er,pos,labels)       # 画标签
plt.axis('off')                             # 去掉坐标刻度
plt.show()

def draw_networkx_nodes(G, pos,nodelist=None,node_size=300,node_color='r',node_shape='o',alpha=1.0,cmap=None,vmin=None,vmax=None,ax=None,linewidths=None,label=None,**kwds):

pos:dictionary
将节点作为键和位置作为值的字典。 位置应该是长度为2的序列。

ax:Matplotlib Axes对象,可选 在指定的Matplotlib轴中绘制图形。

nodelist:list,可选 只绘制指定的节点(默认G.nodes())

node_size:标量或数组 节点大小(默认值= 300)。如果指定了数组,它必须是 与点头长度相同。

node_color:颜色字符串或浮点数组 节点颜色。可以是单颜色格式字符串(default =‘r’),
或者具有与点头相同长度的颜色序列。 如果指定了数值,它们将被映射到 颜色使用cmap和vmin,vmax参数。看到
matplotlib.scatter更多详细信息。

node_shape:string 节点的形状。规格为matplotlib.scatter 标记,‘so ^> v
<dph8’(默认=‘o’)之一。

alpha:float 节点透明度(默认值= 1.0)

cmap:Matplotlib色图 色彩映射节点的强度(默认=无)

vmin,vmax:float 节点色彩映射缩放的最小值和最大值(默认值=无)

线宽:[无|标量|序列] 符号边框的线宽(默认值= 1.0)

label:[无|串] 图例的标签

def draw_networkx_edges(G, pos,edgelist=None,width=1.0,edge_color='k',style='solid',alpha=1.0,edge_cmap=None,edge_vmin=None,edge_vmax=None,ax=None,arrows=True,label=None,**kwds):

G:图表 一个networkx图 pos:dictionary 将节点作为键和位置作为值的字典。 位置应该是长度为2的序列。

edgelist:边缘元组的集合 只绘制指定的边(默认= G.edges())

width:float或float数组 边线宽度(默认值= 1.0)

edge_color:颜色字符串或浮点数组 边缘颜色。可以是单颜色格式字符串(default =‘r’),
或者具有与edgelist相同长度的颜色序列。 如果指定了数值,它们将被映射到
颜色使用edge_cmap和edge_vmin,edge_vmax参数。

style:string 边线样式(默认=‘solid’)(实线|虚线|点线,dashdot)

alpha:float 边缘透明度(默认值= 1.0)

edge_ cmap:Matplotlib色彩映射 用于映射边缘强度的色彩映射(默认值=无)

edge_vmin,edge_vmax:float 边缘色图缩放的最小值和最大值(默认值=无)

ax:Matplotlib Axes对象,可选 在指定的Matplotlib轴中绘制图形。

arrows:bool,optional(default = True) 对于有向图,如果为真,则绘制箭头。

label:图例的标签

networkx 画图布局相关推荐

  1. networkx画图(番外)——(1)自定义节点布局

    networkx画图(番外)--(1)自定义节点布局 networkx虽然非常方便,但在一些超大规模的图数据上,依然显得吃力.所以大多数时候,它仅仅是被用来做一些实例性的分析和可视化展示的,这需要学会 ...

  2. networkx画图

    使用networkx画图,关键是掌握draw_networkx_edges.draw_networkx_nodes和draw_networkx_labels三个方法的使用,设置好位置列表,节点列表,标 ...

  3. NetworkX画图:nx.draw_networkx(函数详解)

    NetworkX画图:nx.draw_networkx(函数详解) draw_networkx(G, pos=None, arrows=True, with_labels=True, **kwds) ...

  4. Python+NetworkX画图的nx.draw_networkx(函数详解)

    Python+NetworkX画图的nx.draw_networkx函数详解 Python+NetworkX画图的nx.draw_networkx(函数详解) Python+NetworkX画图的nx ...

  5. Python处理Les Misérables network并利用networkx画图

    数据集介绍 <悲惨世界>中的人物关系图,图中共77个节点.254条边. 数据集截图: 打开README文件: Les Misérables network, part of the Kob ...

  6. networkx 画图中文方块

    今天在使用networkx画网络社交图时,画出来的节点名称中文显示全是方块,经过多次百度和尝试,最终解决 版本: Python 3.5 (Anaconda3) 操作系统:win7 1.下载一个中文字体 ...

  7. Python画图布局

    加入下面可设置紧致布局,去掉多余的空白地方,对于有subplot的可以自动调整子图间的布局,防止重叠 plt.tight_layout() 见下面例子: import matplotlib.pyplo ...

  8. KNN算法简单?我竟用3万字没写清楚······

    大家好,我是小伍哥,本文非常长,建议先收藏,有空再看 谈起KNN,很多人都会觉得非常简单,甚至会露出不屑+鄙视,包括我自己,当初也是如此,当我进行深入的研究,发现真是大意了. 大家都知道KNN可以用于 ...

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

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

最新文章

  1. Hackthebox--------irked
  2. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
  3. 小手段:开启 GNOME 的窗口分组效果
  4. 精品网摘:大内核锁将何去何从
  5. 解析 http 请求 header 错误_详解http报文(2)-web容器是如何解析http报文的
  6. 火力发电厂与变电站设计防火规范_2019年《建筑设计防火规范》新版征求意见稿...
  7. Scikit-learn数据预处理分类变量编码之多标签二值化
  8. JS获取元素在页面的位置
  9. a113 智能音箱芯片方案_智能路由、智能音箱、智能面板三大网红方案:中国“芯”选择让智慧家庭体验更出色...
  10. 把握三大计划 抓住ERP项目实施的灵魂
  11. 【Prince2科普】P2七大主题之商业论证
  12. 显示连接失败_技术丨外接显示器障碍的诊断方法
  13. 【ProjectT】Tapestry • Quick Start • Forms
  14. Javascript从零开始学习第一天
  15. qxdm无法安装问题闪一下_关于QXDM的安装,解决Win7下QIK报错的问题
  16. Axure RP 8基础原件介绍
  17. 日本“性爱机器人”上线1小时被抢空
  18. STM32的USART串口通讯程序(查询方式)
  19. FTX交易平台与AZA Finance达成合作,推动非洲数字经济发展
  20. 直观打印二叉树的图形

热门文章

  1. 基于RESTful的FastAPI服务模板
  2. vue项目将px转为rem实践
  3. php: pcntl_signal信号处理
  4. 将Excel数据导入到Notes应用
  5. 浅谈npm和yarn的区别
  6. java项目遇到难题_Java项目遇到的常见问题
  7. ultron,奥创,ultron官网,奥创官网,奥创中国区官网,ultron中国区官网,奥创公链,ultron公链,ulx,ultron奥创,海洋renhe333333
  8. CPU 发热的几个可能原因
  9. Linux系统中社保卡阅读
  10. Springboot的快速入门