先上结果:

python开发网络拓扑监控 python绘制网络拓扑图_python3

鼠标指到相关节点后会这样显示:

 

python开发网络拓扑监控 python绘制网络拓扑图_pyecharts_02

 

 滚轮还可以放大缩小

还可以自定义图标。

唯一的缺点就是无法在连接线的两端显示端口好、两个节点之间只能有一条线相连。

缺点可以通过补充一个excel端口接线表来补充说明。

上代码:

1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 """
 4   Author:  Linxy -- <592901071@qq.com>
 5   Created: 2017-7-30
 6 """
 7 
 8 
 9 from pyecharts import Graph#引用之前要先pip install pyecharts及相关的支持模块
10 
11 
12 nodes = [{"name": "外网", "symbolSize": 50,'symbol':'image://D://yun.png'},#注意图标的位置要用绝对地址,否则会认不到图片
13          {"name": "防火墙", "symbolSize": 40},#设置节点及节点图标大小
14          {"name": "核心交换", "symbolSize": 50},
15          {"name": "9-A1-1", "symbolSize": 20},
16          {"name": "9-A1-2", "symbolSize": 20},
17          {"name": "9-A1-3", "symbolSize": 20},
18          {"name": "9-A3-1", "symbolSize": 20},
19          {"name": "9-A3-2", "symbolSize": 20},         
20          {"name": "9-A3-3", "symbolSize": 20},]
27 
28 links = [{"source": "防火墙", "target": "外网"},#设置节点连接关系
29          {"source": "防火墙", "target": "核心交换"},
30          {"source": "核心交换", "target": "9-A1-1"},
31          {"source": "核心交换", "target": "9-A1-2"},
32          {"source": "核心交换", "target": "9-A1-3"},
33          {"source": "核心交换", "target": "9-A3-1"},
34          {"source": "核心交换", "target": "9-A3-2"},
35          {"source": "核心交换", "target": "9-A3-3"},]
36 
37 graph = Graph("XXX网络拓扑图",'这里附标题',height=600,width=800)#画布高600宽800
38 graph.add("", nodes, links, repulsion=8000,is_label_show=True)#is_label_show=True表示节点名字为一直显示
39 #graph.show_config()#表示将生成的文件打印出来,我们只要结果的HTML不需要知道代码
40 graph.render(r'./tb.html')#生成html文件并保存到当前路劲下。