小书匠Graph图论

graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同.

目录:


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

7.对图进行操作

7.1移除某些节点和边

  1. #G.clear() 

  2. #生成graph 

  3. G=nx.path_graph(8) 


  4. plt.subplots(1,2,figsize=(15,5)) 

  5. plt.suptitle('移除部分节点和边',fontproperties=myfont) 


  6. #画出未操作前的graph 

  7. plt.subplot(121) 

  8. nx.draw(G, with_labels=True, font_weight='bold') 

  9. plt.title('操作前',fontproperties=myfont) 

  10. plt.axis('on') 

  11. plt.xticks([]) 

  12. plt.yticks([]) 


  13. #移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试 

  14. G.remove_node(2) 

  15. G.remove_nodes_from([1,5]) 

  16. G.remove_edge(3, 4) 


  17. #画出操作后的graph 

  18. plt.subplot(122) 

  19. nx.draw(G, with_labels=True, font_weight='bold') 

  20. plt.title('操作后',fontproperties=myfont) 

  21. plt.axis('on') 

  22. plt.xticks([]) 

  23. plt.yticks([]) 


  24. #显示graph 

  25. plt.show() 


移除某些节点和边

7.2合并graph

  1. # G1.clear() 

  2. # G2.clear() 

  3. # G3.clear() 


  4. plt.subplots(1,3,figsize=(15,5)) 

  5. plt.suptitle('合并两个图',fontproperties=myfont) 


  6. #生成graph1 

  7. G1=nx.path_graph(8) 

  8. plt.subplot(131) 

  9. nx.draw(G1, with_labels=True, font_weight='bold') 

  10. plt.title('图1',fontproperties=myfont) 

  11. plt.axis('on') 

  12. plt.xticks([]) 

  13. plt.yticks([]) 


  14. #生成graph2 

  15. G2=nx.complete_graph(3) 

  16. plt.subplot(132) 

  17. nx.draw(G2, with_labels=True, font_weight='bold') 

  18. plt.title('图2',fontproperties=myfont) 

  19. plt.axis('on') 

  20. plt.xticks([]) 

  21. plt.yticks([]) 


  22. #移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试 

  23. G3=nx.disjoint_union(G1,G2) 

  24. plt.subplot(133) 

  25. nx.draw(G3, with_labels=True, font_weight='bold') 

  26. plt.title('合并后',fontproperties=myfont) 

  27. plt.axis('on') 

  28. plt.xticks([]) 

  29. plt.yticks([]) 


  30. #显示graph 

  31. plt.show() 


合并graph

7.3有向图和无向图的转化

  1. #无向图转有向图 

  2. plt.subplots(1,2,figsize=(15,3)) 

  3. plt.suptitle('无向图转换为有向图',fontproperties=myfont) 


  4. #定义无向图 

  5. G = nx.path_graph(8) 

  6. #转换为有向图 

  7. G2=G.to_directed() 


  8. #下面是可视化转换前后的两个图 

  9. plt.subplot(121) 

  10. nx.draw(G, with_labels=True, font_weight='bold') 

  11. plt.title('无向图',fontproperties=myfont) 

  12. plt.axis('on') 

  13. plt.xticks([]) 

  14. plt.yticks([]) 


  15. plt.subplot(122) 

  16. nx.draw(G2, with_labels=True, font_weight='bold') 

  17. plt.title('有向图',fontproperties=myfont) 

  18. plt.axis('on') 

  19. plt.xticks([]) 

  20. plt.yticks([]) 

  21. plt.show() 

  22. plt.close() 


  23. #有向图转无向图 

  24. G.clear() 

  25. G2.clear() 

  26. plt.subplots(1,2,figsize=(15,3)) 

  27. plt.suptitle('有向图转换为无向图',fontproperties=myfont) 


  28. #定义有向图 

  29. G = nx.path_graph(8,create_using=nx.DiGraph()) 

  30. #转换为无向图 

  31. G2=G.to_undirected() 


  32. #下面是可视化转换前后的两个图 

  33. plt.subplot(121) 

  34. nx.draw(G, with_labels=True, font_weight='bold') 

  35. plt.title('有向图',fontproperties=myfont) 

  36. plt.axis('on') 

  37. plt.xticks([]) 

  38. plt.yticks([]) 


  39. plt.subplot(122) 

  40. nx.draw(G2, with_labels=True, font_weight='bold') 

  41. plt.title('无向图',fontproperties=myfont) 

  42. plt.axis('on') 

  43. plt.xticks([]) 

  44. plt.yticks([]) 

  45. plt.show() 


  46. # 注:可以看出无向图转有向图时,得到的边都是双向 


无向图转换为有向图

有向图转换为无向图

NetworkX系列教程(6)-对graph进行操作的更多相关文章

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

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

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

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

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

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

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

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

  5. NetworkX系列教程(4)-设置graph的信息

    小书匠Graph图论 要画出美观的graph,需要对graph里面的节点,边,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and ...

  6. 【原创】【2】rich editor系列教程。了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏

    [原创][2]rich editor系列教程.了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏 索引目录:http://www.cnblogs.com/hen ...

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

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

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

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

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

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

随机推荐

  1. jvm--工具

    jps (java process status) == ps / top 作用:显示所有运行中的java进程. jstat 作用:查看类装载,内存,垃圾收集,jit编译的信息. jinfo 作用:实 ...

  2. JNI创建共享内存导致JVM terminated的问题解决(segfault,shared memory,内存越界,内存泄漏,共享内存)

    此问题研究了将近一个月,最终发现由于JNI不支持C中创建共享内存而导致虚拟机无法识别这块共享内存,造成内存冲突,最终虚拟机崩溃. 注意:JNI的C部分所使用的内存也是由JVM创建并管理的,所以C创建了 ...

  3. windows下搭建nginx负载均衡

    学习笔记,第一次记录避免忘记 首先介绍一下本地环境是windows2008 R2-64位. 1.  到nginx官网上下载最新稳定版的安装包,http://nginx.org/en/download. ...

  4. physdiskwrite 的简单使用

    physdiskwrite 的简单使用 参考  https://m0n0.ch/wall/physdiskwrite.php 来源 https://www.cnblogs.com/EasonJim/p ...

  5. SAP Cloud for Customer的Container应用设计原理

    来自Jerry的同事,Yang Joey. 相信大部分C4C的UI developer包括我刚开始的时候都会比较好奇我们平时写的javascript代码是如何运行在移动设备上的,同样的,我也对这个问题 ...

  6. [LeetCode] 300. 最长上升子序列 ☆☆☆(动态规划 二分)

    https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/dong-tai-gui-hua-she-ji-fan ...

  7. py-1 语言介绍

    一.编程与编程语言 1.编程的目的 计算机的发明,是为了用机器取代并解放人力.而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑.电脑一样自动执 ...

  8. centos 7.6 配置VNC

    一.安装 1.  以root用户运行以下命令来安装vncserver; yum install tigervnc-server 2.  同样运行以下命令来安装vncviewer; yum instal ...

  9. (备忘)jeecg的$.dialog的一些参数

    jeecg表单弹出框采用的技术是lhgdialog 一.配置全局默认参数 (function(config){ config['extendDrag'] = true; // 注意,此配置参数只能在这 ...

  10. DotnetCore下Grpc的简单使用(基于3.0版本)

    目录: 一.简单介绍DotnetCore3.0如何将.proto文件生成对应的服务端和客户端类 二.介绍如何在服务端使用Grpc,以及Grpc需要的条件(HTTP2.TLS) 三.介绍如何创建Grpc ...