最近写论文画了许多图,在这里记录一些。当然,如果仅仅是展示性图片的话也可以使用visio,但是这里我仍然想探究一下如何使用pyhon画出美观的网络拓扑图。

一、画出网络拓扑图

给出邻接矩阵,画出网络的拓扑图:

import networkx as nx
import matplotlib.pyplot as plt
import numpy as npG = nx.Graph()
Matrix = np.array([[0, 0, 1, 1, 1, 1],  # a[0, 0, 1, 1, 0, 1],  # b[1, 1, 0, 0, 1, 1],  # c[1, 1, 0, 0, 1, 1],  # d[1, 0, 1, 1, 0, 1],  # e[1, 1, 1, 1, 1, 0],])for i in range(len(Matrix)):for j in range(len(Matrix)):if Matrix[i, j] != 0:G.add_edge(i, j)pos = nx.random_layout(G)
nx.draw(G, node_size=50, node_color='black', edge_color='b', width=2)
plt.show()

效果如下:

也可以根据需求改变节点或链路的形状

pos = nx.random_layout(G)
# nx.draw(G, node_size=50, node_color='black', edge_color='b', width=2)
nx.draw_networkx_nodes(G, pos, node_shape='*', node_size=500, node_color='orange')#1800,100
nx.draw_networkx_edges(G, pos, edge_color='b', width=2, style='dashed')# solid|dashed|dotted, dashdot
plt.show()

效果如下:

二、画出网络拓扑图,并对节点和链路进行表示

为了在论文中美观的表示出网络拓扑以及节点和链路的序号,也可以使用visio进行画图,但是这样会比较慢,所以试图寻找基于python的画图方法。

import networkx as nx
import matplotlib.pyplot as pltG = nx.Graph()
# 确定节点之间的链接关系(边),并对边进行编号(或标出边的权重)
G.add_edge(5, 1, weight=1)
G.add_edge(5, 3, weight=2)
G.add_edge(1, 2, weight=3)
G.add_edge(1, 3, weight=4)
G.add_edge(3, 2, weight=5)
G.add_edge(3, 4, weight=6)
G.add_edge(2, 4, weight=7)
G.add_edge(2, 6, weight=8)
G.add_edge(4, 6, weight=9)data = {(u, v): weight['weight'] for (u, v, weight) in G.edges(data=True)}
# 确定节点在图中的位置(画出来的图比较好看)
pos = {1: [0, 0],2: [5, 0],3: [0, -5],4: [5, -5],5: [-2.5, -2.5],6: [7.5, -2.5],}
# 对节点的颜色进行标注
color_map = ["#ffc20e"]#5
color_map.extend(["#ffc20e"])#1
color_map.extend(["#7bbfea"])#3
color_map.extend(["#7bbfea"])#2
color_map.extend(["#7fbfea"])#4
color_map.extend(["#7fbfea"])#6# 对链路的颜色进行标注
edge_map = ["#ffc20e"]
edge_map.extend(['black']*8)nx.draw_networkx_nodes(G, pos, node_size=500, node_color=color_map)#1800,100
nx.draw_networkx_edges(G, pos, width=3, edge_color=edge_map)#1,5
nx.draw_networkx_labels(G, pos, font_size=20)#40
nx.draw_networkx_edge_labels(G, pos, data, font_size=20)#30
plt.show()

效果如图所示:

由于我们要尽可能做到论文中的图在只有黑白色时仍然不影响阅读,因此也可以对其中节点或链路的大小进行随意设置。

size_map = ([1000]*2)
size_map.extend([500]*4)edge_size = [6]
edge_size.extend([3]*8)nx.draw_networkx_nodes(G, pos, node_size=size_map, node_color=color_map)#1800,100
nx.draw_networkx_edges(G, pos, width=edge_size, edge_color=edge_map)#1,5
nx.draw_networkx_labels(G, pos, font_size=20)#40
nx.draw_networkx_edge_labels(G, pos, data, font_size=20)#30
plt.show()

最终效果展示如下:

基于Python的网络拓扑图绘制相关推荐

  1. 基于QT-QGraphicsView的网络拓扑图

    最近研究制作基于QT的网络拓扑图,目前比较理想的网络拓扑图: 0)到目前为止,自定义制作和实现的传输拓扑图效果 基于QWidget.QGraphicsView.QGraphicsPixmapItem. ...

  2. 基于python的游戏设计与实现-基于Python的网络中国象棋游戏设计与实现

    基于Python的网络中国象棋游戏设计与实现 摘要中国象棋是一种家喻户晓的棋类游戏,随着互联网时代的到来,人们的娱乐方式也逐渐向PC端和移动端上发展.本文将传统的中国象棋游戏和当下的互联网技术结合作为 ...

  3. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等

    Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形

  4. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

    在现阶段大数据的时代中,想要实现对数据的获取和分析,要先具备足够的数据源,网络爬虫技术就为其数据获取提供了良好的条件,且还能够实现对数据源的目的性采集. 在网络爬虫技术应用中,Python 脚本语言的 ...

  5. 爬虫技术python流程图_基于Python的网络爬虫技术研究

    基于 Python 的网络爬虫技术研究 王碧瑶 [摘 要] 摘要:专用型的网络爬虫能够得到想要的返回结果 , 本文就以拉勾网作 为例子 , 对基于 Python 的网络爬虫技术进行研究和分析. [期刊 ...

  6. python网络爬虫的流程图_基于Python的网络爬虫的设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...

  7. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  8. 开题报告———基于Python的网络爬虫的电影网站设计与实现

    摘要 当代万维⽹和互联⽹技术发展迅猛,有时候在浏览某些⽹页.相册或者某些图⽚⽹站时,发现很多图⽚都很喜欢想要下载到本地,但是数量较多时操作会过于繁琐.此爬⾍软件是为了使⽤户能够便捷的获取并下载某些⽹站 ...

  9. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计

    程序设计 ●Program Design 基于 Python的网络爬虫程序设计 网络 信 息量 的迅 猛 增 长,对 如何从海量的信息中准确的搜索 到用户需要的信息提 出了极大的 挑战.网络爬 虫具有 ...

最新文章

  1. Javaweb中提到的反射浅析(附源码)
  2. 使用datatable 将测试数据与业务分离
  3. android面试题总结加强
  4. 获得系统当前时间的字符串格式
  5. jsp设置背景图片并使得图片扩大到整个屏幕
  6. JMeter性能测试-安装与入门
  7. iOS UICollectionView的简单使用和常用代理方法
  8. 使用OGR创建弧形图形
  9. Unity 录制简单的动画
  10. 荣耀/华为电脑安装重新安装电脑管家实现跟华为手机多屏协同(666)
  11. 拳王虚拟项目公社:微店闲鱼怎样自动化卖虚拟商品,虚拟资源自动化收钱项目
  12. 数列极限:重要极限 π 与 e
  13. 冰冻三尺,非一日之寒。数据解析——xpath(2)
  14. java contains 效率_List与Set的contains方法效率问题
  15. python自动玩游戏_python学习:(2)自动玩2048游戏
  16. [活动]2009年Linux内核开发者大会参与记录
  17. c语言随机数字密码生成器,随机数生成器(浮点数整型数)
  18. 马云最新撰文:公司假口号越多 员工士气越低落
  19. 发生死锁时自动发mail
  20. React生命周期讲解

热门文章

  1. 浅析蓝牙nrf51822程序框架
  2. 【MongoDB】BSON类型
  3. Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)
  4. 最后还是菜是原罪—华为武研所优招面经
  5. nginx实用笔记 陈穗龙记
  6. php实训ppt,PHP动态网站开发实例教程教学全套课件(刘万辉)配套资料 任务3:运用目录与文件实现投票统计.ppt...
  7. Class.forName(xxx.xx.xx) 的作用
  8. python自动发outlook邮件_使用python自动发邮件(163、QQ、outlook邮箱)
  9. 基于单片机的无线语音遥控智能车设计
  10. 张钹:走向第三代人工智能