NetworkX系列教程(4)-设置graph的信息
要画出美观的graph,需要对graph里面的节点,边,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and edges部分.
目录:
注意:如果代码出现找不库,请返回第一个教程,把库文件导入.
5.设置graph的信息
5.1创建graph时添加属性
- #G.clear()
- G=nx.Graph()
- G = nx.Graph(day="Friday")
- print('Assign graph attributes when creating a new graph: ',G.graph)
- G.graph['day'] = "Monday"
- print('Assign graph attributes when have a graph: ',G.graph)
输出:
Assign graph attributes when creating a new graph: {'day': 'Friday'}
Assign graph attributes when have a graph: {'day': 'Monday'}
5.2指定节点的属性
- #创建时设置
- G.add_node(1, time='5pm')
- G.add_nodes_from([3,4], time='2pm',color='g')
- #直接设置
- G.nodes[1]['room'] = 714
- G.nodes[1]['color'] = 'b'
- print(G.nodes.data())
输出:
[(1, {'room': 714, 'time': '5pm', 'color': 'b'}), (3, {'time': '2pm', 'color': 'g'}), (4, {'time': '2pm', 'color': 'g'})]
5.3指定边的属性
- #创建时设置
- G.add_edge(1, 2, weight=4.7 )
- G.add_edges_from([(3, 4), (4, 5)], color='red',weight=10)
- G.add_edges_from([(1, 2, {'color': 'blue'}), (2, 3, {'weight': 8})])
- #直接设置
- G[1][2]['weight'] = 4.7
- G[1][2]['color'] = "blue"
- G.edges[3, 4]['weight'] = 4.2
- G.edges[1, 2]['color'] = "green"
- print('edge 1-2: ',G.edges[1,2])
- print('edge 3-4: ',G.edges[3,4])
输出:
edge 1-2: {'weight': 4.7, 'color': 'green'}
edge 3-4: {'weight': 4.2, 'color': 'red'}
5.4显示graph
- #生成节点标签
- labels={}
- labels[1]='1'
- labels[2]='2'
- labels[3]='3'
- labels[4]='4'
- labels[5]='5'
- #获取graph中的边权重
- edge_labels = nx.get_edge_attributes(G,'weight')
- print('weight of all edges:',edge_labels)
- #生成节点位置
- pos=nx.circular_layout(G)
- print('position of all nodes:',pos)
- #把节点画出来
- nx.draw_networkx_nodes(G,pos,node_color='g',node_size=500,alpha=0.8)
- #把边画出来
- nx.draw_networkx_edges(G,pos,width=1.0,alpha=0.5,edge_color='b')
- #把节点的标签画出来
- nx.draw_networkx_labels(G,pos,labels,font_size=16)
- #把边权重画出来
- nx.draw_networkx_edge_labels(G, pos, edge_labels)
- plt.axis('on')
- #去掉坐标刻度
- plt.xticks([])
- plt.yticks([])
- plt.show()
输出:
weight of all edges: {(1, 2): 4.7, (3, 4): 4.2, (2, 3): 8, (4, 5): 10}
position of all nodes: {1: array([1.00000000e+00, 2.38418583e-08]), 2: array([0.30901696, 0.95105658]), 3: array([-0.80901709, 0.58778522]), 4: array([-0.80901698, -0.58778535]), 5: array([ 0.30901711, -0.95105647])}

NetworkX系列教程(4)-设置graph的信息的更多相关文章
- NetworkX系列教程(5)-查看graph的信息
小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...
- NetworkX系列教程(8)-Drawing Graph
小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...
- NetworkX系列教程(1)-创建graph
小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...
- NetworkX系列教程(7)-对graph进行分析
小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...
- NetworkX系列教程(6)-对graph进行操作
小书匠Graph图论 graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同. 目录: 7.对图进行操作 7.1移除某些节点和边 7.2 ...
- NetworkX系列教程(3)-手动创建graph
小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...
- NetworkX系列教程(2)-graph生成器
小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...
- NetworkX系列教程(11)-graph和其他数据格式转换
小书匠 Graph 图论 学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...
- NetworkX系列教程(10)-算法之二:最小/大生成树问题
小书匠 Graph 图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...
随机推荐
- sass快速使用
sass的使用 建议使用一种语法格式(scss) scss sass转换 sass-convert main.scss main.sass sass变量声明 example: $headline-ff ...
- PowerBuilder学习笔记之2PowerScript语言(二)
z教材地址:https://wenku.baidu.com/view/1e82d26925c52cc58ad6be05.html?sxts=1565679996440 2.4数组 声明数组:Integ ...
- Arm-Linux 移植 mtd-utils 1.x
有关文章:<mtd-utils 的 使用> 背景: 关于在公司的生产环境有关.不希望每次都在uboot下面做nand flash 的烧写:也觉得使用U盘升级的方法比较慢,而且有关的驱动不是 ...
- extjs layout 最灵活的页面布局样式
当你在页面布局的时候,遇到页面元素较多,不知如何完美布局... 可以试试下面这个类型,万能布局类型. var panel = new Ext.Panel({ renderTo:Ext.getBody( ...
- 基于socket.io客户端与服务端的相互通讯
socket.io是对websocket的封装,用于客户端与服务端的相互通讯.官网:https://socket.io/. 下面是socket.io的用法: 1.由于使用express开的本地服务,先 ...
- 阿里云服务器(Ubuntu16.04 64位)的使用
购买阿里云服务器 1.打开阿里云官方网站,账号登录,选择产品中的云服务器 ECS 2.根据自身需求,选择合适的阿里云服务器系统,(1)点击一键购买,(2)选择地域,(3)根据自身需求,选择系统,这里选 ...
- Linux开机自动启动服务
当我们的Linux,关机后,或者重启后,有些服务需要人工启动才能有.为了解决这个问题,我找了一个办法,用一个脚本,开机启动想启动的服务. 方法一:(强烈推荐) 1.写一个脚本auto.sh vim ...
- MongoDB简介,安装,增删改查
MongoDB到底是什么鬼? 最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据库,知道是文件型数据库,但是不知道怎么来用 那么好, ...
- Docker本地镜像上传到阿里云仓库
登录阿里云 在容器镜像服务中先创建命名空间 随后创建镜像仓库 我使用的代码源是本地仓库 创建后点击仓库的管理 就可以看到阿里云提供的操作指南 (下面的操作每个人都不同,详情查看阿里云的操作指南) 输入 ...
- Python_if语句
1.if语句: color='红色' if color=='蓝色': print('我是蓝色') elif color=='红色': print('我是红色') else : print('未知') ...