小书匠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. redis原理及集群主从配置

    一.简介 存储系统背景 存储系统有三类: RDBMS oracle,dh2,postgresql,mysql,sql server NoSQL: KV NoSQL:redis,memcached 列式 ...

  2. 苹果appstore应用名下面的开发者名称填写或修改

    最近上架不小心遇到一个问题,开发者名称写错了,放假前大意了,记录一下修改过程,希望碰到同样问题的伙伴不要要着急,下面的内容可能帮你哦. 我们应用的之前的开发者名称是个人的,之前没注意这个问题,以后想注 ...

  3. ReactNative使用 react-navigation 详解

    react-navigation是官方主推的导航组件,致力于解决导航卡顿,数据传递,Tabbar和navigator布局,支持redux. 最新版本为3.x,大多文档介绍的是 1.x 或 2.x 的用 ...

  4. 【日语】日语单词N3_N4_N5

    日语单词N3_N4_N5 单 词 讲 解 あ行单词 ああ:0[副]那样.那种 例句:ああ言うことはしないほうがいい.那样的事情最好不做. 電車の窓からごみを棄てているああ言うことはしないほうがいい. ...

  5. How to : SAP PI Cache Refresh

    Requirement : Identify various tools/resources available to perform SAP PI Cache refresh . Please no ...

  6. 等保测评中与oracle有关的工作

    等保2.0包含硬件.存储.中间件.数据库各方面的安全规范,现把与Oracle数据库有关的内容整理如下,供参考: 一.安全计算环境 1.身份鉴别: a,应对登陆的用户进行身份标识和鉴别,身份标识具有唯一 ...

  7. iOS NSNotificationCenter 使用姿势详解

    最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...

  8. [LeetCode] 671. 二叉树中第二小的节点 ☆(递归 合并)

    描述 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有 ...

  9. PHP变量的范围

    1.局部变量 function test(){ $a=1;//局部变量$a,尽在这个函数内部有效 } echo $a; 2.全局变量 $i=10;//全局变量(外部变量) define('MY_NAM ...

  10. git pull 的时候 把本地的修改 覆盖远程端

    首先,git pull 可以分成两步,git fetch 和git merge 使用git branch -a可以看出来    git merge 相当于当前分支  和 origin/master分支 ...