首页 > 编程知识 正文

python 网络拓扑,Python networkx

时间:2023-05-06 21:28:03 阅读:220447 作者:1830

文章目录 安装简介示例无多重边无向图有多重边有向图布局其他算法 附录

2021-4-20更新:

可能新版的networkx不能直接出图,那就在代码末尾加两行代码,就可以出图了

import matplotlib.pyplot as mpmp.show()

以下为原文:

安装

Anaconda Prompt下输入conda install networkx

简介 import networkx as nx# 创建图# G = nx.Graph() # 无多重边无向图G = nx.DiGraph() # 无多重边有向图# G = nx.MultiGraph() # 有多重边无向图# G = nx.MultiDiGraph() # 有多重边有向图# 添加节点G.add_node('a')# 添加边G.add_edge('b', 'c')# 绘图nx.draw(G, with_labels=True)

绘图参数中文解释node_size节点的大小node_color节点的颜色node_shape节点的形状alpha透明度width边的宽度edge_color边的颜色style边的样式with_labels节点是否带标签font_size节点标签字体大小font_color节点标签字体颜色示例 无多重边无向图 import jieba, networkx as nx, matplotlib.pyplot as mp# 分词jieba.suggest_freq(('人', '美', '波'), True)text = '大氵皮美人鱼人美氵皮大。女乃罩作用是用作罩女乃。明天到操场操到天明。广木上人客叫客人上广木。上海自来水来自海上。'words = jieba.lcut(text)# 创建空的网络图G = nx.Graph()# 添加节点for word in words: G.add_node(word)# 添加边for i in range(len(words) - 1): G.add_edge(words[i], words[i+1])# 用黑体显示中文mp.rcParams['font.sans-serif']=['SimHei']# 绘图nx.draw(G, alpha=1, with_labels=True, node_color='white', font_size=12)

有多重边有向图 %matplotlib inlineimport jieba.posseg as jp, networkx as nx# 分词text = '大氵皮美人鱼人美氵皮大。女乃罩作用是用作罩女乃。明天到操场操到天明。广木上人客叫客人上广木。上海自来水来自海上。'words = jp.lcut(text)# 创建【无多重边有向图】G = nx.MultiDiGraph() # 有多重边有向图# 添加节点for word in words: G.add_node(word.flag)# 添加边for i in range(len(words) - 1): G.add_edge(words[i].flag, words[i+1].flag)# 绘图nx.draw(G, alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)

布局 参数解释circular_layout节点在一个圆环上均匀分布random_layout节点随机分布shell_layout节点在同心圆上分布spring_layout用Fruchterman-Reingold算法排列节点nx.draw(G, pos=nx.shell_layout(G), alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)

其他算法 函数功能nx.shortest_path_length最短距离nx.shortest_path最短路径nx.pagerank网页排名附录

GitHub地址:
https://github.com/AryeYellow/PyProjects/blob/master/DataScience/Visualization.ipynb

历史中提交的图片或压缩文件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。