小书匠Graph图论

要画出美观的graph,需要对graph里面的节点,,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and edges部分.

目录:


注意:如果代码出现找不库,请返回第一个教程,把库文件导入.

5.设置graph的信息

5.1创建graph时添加属性

  1. #G.clear() 

  2. G=nx.Graph() 

  3. G = nx.Graph(day="Friday") 

  4. print('Assign graph attributes when creating a new graph: ',G.graph) 

  5. G.graph['day'] = "Monday" 

  6. 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指定节点的属性

  1. #创建时设置 

  2. G.add_node(1, time='5pm') 

  3. G.add_nodes_from([3,4], time='2pm',color='g') 


  4. #直接设置 

  5. G.nodes[1]['room'] = 714 

  6. G.nodes[1]['color'] = 'b' 


  7. print(G.nodes.data()) 

输出:

[(1, {'room': 714, 'time': '5pm', 'color': 'b'}), (3, {'time': '2pm', 'color': 'g'}), (4, {'time': '2pm', 'color': 'g'})]

5.3指定边的属性

  1. #创建时设置 

  2. G.add_edge(1, 2, weight=4.7 ) 

  3. G.add_edges_from([(3, 4), (4, 5)], color='red',weight=10) 

  4. G.add_edges_from([(1, 2, {'color': 'blue'}), (2, 3, {'weight': 8})]) 


  5. #直接设置 

  6. G[1][2]['weight'] = 4.7 

  7. G[1][2]['color'] = "blue" 

  8. G.edges[3, 4]['weight'] = 4.2 

  9. G.edges[1, 2]['color'] = "green" 


  10. print('edge 1-2: ',G.edges[1,2]) 

  11. 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

  1. #生成节点标签 

  2. labels={} 

  3. labels[1]='1' 

  4. labels[2]='2' 

  5. labels[3]='3' 

  6. labels[4]='4' 

  7. labels[5]='5' 


  8. #获取graph中的边权重 

  9. edge_labels = nx.get_edge_attributes(G,'weight') 

  10. print('weight of all edges:',edge_labels) 


  11. #生成节点位置 

  12. pos=nx.circular_layout(G) 

  13. print('position of all nodes:',pos) 


  14. #把节点画出来 

  15. nx.draw_networkx_nodes(G,pos,node_color='g',node_size=500,alpha=0.8) 


  16. #把边画出来 

  17. nx.draw_networkx_edges(G,pos,width=1.0,alpha=0.5,edge_color='b') 


  18. #把节点的标签画出来 

  19. nx.draw_networkx_labels(G,pos,labels,font_size=16) 


  20. #把边权重画出来 

  21. nx.draw_networkx_edge_labels(G, pos, edge_labels) 


  22. plt.axis('on') 

  23. #去掉坐标刻度 

  24. plt.xticks([]) 

  25. plt.yticks([]) 

  26. 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的信息的更多相关文章

  1. NetworkX系列教程(5)-查看graph的信息

    小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...

  2. NetworkX系列教程(8)-Drawing Graph

    小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...

  3. NetworkX系列教程(1)-创建graph

    小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...

  4. NetworkX系列教程(7)-对graph进行分析

    小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...

  5. NetworkX系列教程(6)-对graph进行操作

    小书匠Graph图论 graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同. 目录: 7.对图进行操作 7.1移除某些节点和边 7.2 ...

  6. NetworkX系列教程(3)-手动创建graph

    小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...

  7. NetworkX系列教程(2)-graph生成器

    小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...

  8. NetworkX系列教程(11)-graph和其他数据格式转换

    小书匠 Graph 图论  学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...

  9. NetworkX系列教程(10)-算法之二:最小/大生成树问题

    小书匠 Graph 图论  重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...

随机推荐

  1. SAS学习笔记49 生成前20个黄金分割数列到数据集

    黄金分割数列即斐波那契数列,该数列中后一个数与前一个数的比例越往后越接近于黄金比例(1+√5)/2 ,此数列分布表现出极致的均衡与和谐之美

  2. Ubuntu下添加定时任务执行php文件

    //添加自动下载定时任务1. vim /etc/crontab2. 添加 #每5分钟执行一次*/5 * * * * root /usr/bin/php /home/wwwroot/123.php3. ...

  3. Python 使用gevent下载图片案例

    import urllib.request import gevent from gevent import monkey monkey.patch_all() def downloader(img_ ...

  4. 前台.cshtml得到cookie值方法

    function Cookie_() { $.ajax({ url: "/Login_/do_cookie",//请求地址 dataType: "json",/ ...

  5. 打造完美Python环境(pyenv, virtualenv, pip)

    写在最前 在使用 Python 进行开发和部署的时候,经常会碰到Python版本或者依赖包或者对应版本不同导致各种意外情况发生. 本文将介绍如何通过 pyenv, virtualenv, pip三个工 ...

  6. Java 反射原理

    一.Java 反射的定义 反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法或者属性: 二.反射提供的功能: 在运行时判断任意 ...

  7. C#预处理器指令——学习

    若要详细了解如何使用 C# 预处理器指令选择性地编译代码段,请参阅 #define(C# 参考)和 #if(C# 参考). #define(C# 参考) 地址:https://docs.microso ...

  8. FRDM-KL43开发板驱动段式液晶SLCD的实现方法

    LCD的驱动不像LED那样,加上电压(LED实际上是电流驱动)就可以长期显示的. LCD驱动必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压, 不但不能正常显示,时间久了还会损 ...

  9. python(列表及列表的相关操作、元组和range)

    1.什么是列表 列表是一个课表的数据类型 列表有[]来表示,每一项元素用逗号隔开,列表什么都能装.是能装对象的对象. 列表可以装大量数据. 2.列表的索引和切片 列表和字符串一样,也有索引和切片.只不 ...

  10. 【清北学堂】广州OI学习游记

    \(Day~0\) 早上\(9\)点多才爬起来,然后水了道题. 下午从[数据删除]出发,颠簸了将近\(5\)个小时终于抵达广州. 一出地铁站--卧槽这天,卧槽这风,要下雨的节奏? 没过两分钟倾盆大雨. ...