NetworkX系列教程(6)-对graph进行操作
graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同.
目录:
注意:如果代码出现找不库,请返回第一个教程,把库文件导入.
7.对图进行操作
7.1移除某些节点和边
- #G.clear()
- #生成graph
- G=nx.path_graph(8)
- plt.subplots(1,2,figsize=(15,5))
- plt.suptitle('移除部分节点和边',fontproperties=myfont)
- #画出未操作前的graph
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('操作前',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试
- G.remove_node(2)
- G.remove_nodes_from([1,5])
- G.remove_edge(3, 4)
- #画出操作后的graph
- plt.subplot(122)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('操作后',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #显示graph
- plt.show()

7.2合并graph
- # G1.clear()
- # G2.clear()
- # G3.clear()
- plt.subplots(1,3,figsize=(15,5))
- plt.suptitle('合并两个图',fontproperties=myfont)
- #生成graph1
- G1=nx.path_graph(8)
- plt.subplot(131)
- nx.draw(G1, with_labels=True, font_weight='bold')
- plt.title('图1',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #生成graph2
- G2=nx.complete_graph(3)
- plt.subplot(132)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('图2',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #移除部分节点和边,移除所有的点和边使用G.clear(),不再单独测试
- G3=nx.disjoint_union(G1,G2)
- plt.subplot(133)
- nx.draw(G3, with_labels=True, font_weight='bold')
- plt.title('合并后',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #显示graph
- plt.show()

7.3有向图和无向图的转化
- #无向图转有向图
- plt.subplots(1,2,figsize=(15,3))
- plt.suptitle('无向图转换为有向图',fontproperties=myfont)
- #定义无向图
- G = nx.path_graph(8)
- #转换为有向图
- G2=G.to_directed()
- #下面是可视化转换前后的两个图
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('无向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('有向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- plt.close()
- #有向图转无向图
- G.clear()
- G2.clear()
- plt.subplots(1,2,figsize=(15,3))
- plt.suptitle('有向图转换为无向图',fontproperties=myfont)
- #定义有向图
- G = nx.path_graph(8,create_using=nx.DiGraph())
- #转换为无向图
- G2=G.to_undirected()
- #下面是可视化转换前后的两个图
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('有向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('无向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- # 注:可以看出无向图转有向图时,得到的边都是双向


NetworkX系列教程(6)-对graph进行操作的更多相关文章
- NetworkX系列教程(1)-创建graph
小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...
- NetworkX系列教程(8)-Drawing Graph
小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...
- NetworkX系列教程(7)-对graph进行分析
小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...
- NetworkX系列教程(5)-查看graph的信息
小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...
- NetworkX系列教程(4)-设置graph的信息
小书匠Graph图论 要画出美观的graph,需要对graph里面的节点,边,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and ...
- 【原创】【2】rich editor系列教程。了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏
[原创][2]rich editor系列教程.了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏 索引目录:http://www.cnblogs.com/hen ...
- NetworkX系列教程(2)-graph生成器
小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...
- NetworkX系列教程(11)-graph和其他数据格式转换
小书匠 Graph 图论 学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...
- NetworkX系列教程(3)-手动创建graph
小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...
随机推荐
- SPA项目首页导航+左侧菜单
Mock.js是个啥 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而今天的主角mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的 ...
- MySQL 5.7使用xtabackup报错解决
报错信息: InnoDB: An optimized (without redo logging) DDLoperation has been performed. All modified page ...
- jquery.marquee
http://aamirafridi.com/jquery/jquery-marquee-plugin#examples <script src="/plugins/marquee/j ...
- [转]全网最!详!细!tarjan算法讲解
转发地址:https://blog.csdn.net/qq_34374664/article/details/77488976 原版的地址好像挂了..... 看到别人总结的很好,自己就偷个懒吧..以下 ...
- VBA Exit For语句
当想要根据特定标准退出For循环时,就可以使用Exit For语句.当执行Exit For时,控件会立即跳转到For循环之后的下一个语句. 语法 以下是在VBA中Exit For语句的语法. Exit ...
- 微信小程序 swiper 组件坑
swiper 组件高度被限制为150px了,所以内容无法撑开. 解决办法 给这组件重新设置个高度,然后在把里面的图片设置为自动适应容器大小.图片模式设置为 宽度不变 自动适应高度 <swiper ...
- 无限重启:windows更新之后,在输入密码页面无限重启进入不了系统
解决办法:windows更新之后,在输入密码页面无限重启 总体思路:进入安全模式(如何进入,下文将讲述) --> 点击疑难解答 --> 点击高级选项 --> 点击启 ...
- nginx 之 https 证书配置
HTTPS原理和作用 为什么需要HTTPS 原因:HTTP不安全 传输数据被中间人盗用.信息泄露 数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 对称加密:加密秘钥和解密秘钥 ...
- java判定数据(对象)类型
1.说明一 int 是关键字,Integer是包装类,Number是所有数字了的基类(父类).所以,Number是Integer的基础,Integer是int的基础,也称Integer是int的原型类 ...
- 第十八篇:简易版web服务器开发
在上篇有实现了一个静态的web服务器,可以接收web浏览器的请求,随后对请求消息进行解析,获取客户想要文件的文件名,随后根据文件名返回响应消息:那么这篇我们对该web服务器进行改善,通过多任务.非阻塞 ...