【Python | Networks库详解】最佳实践(22年电工杯B题之路径可视化)

简介: 【Python | Networks库详解】最佳实践(22年电工杯B题之路径可视化)

👉引言💎


铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉


官方参考文档:


点击这里


👉networks?


networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法。图是由顶点、边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系。顶点和边也可以拥有更多的属性,以存储更多的信息。

对于networkx创建的无向图,允许一条边的两个顶点是相同的,即允许出现自循环,但是不允许两个顶点之间存在多条边,即出现平行边。边和顶点都可以有自定义的属性,属性称作边和顶点的数据,每一个属性都是一个Key:Value对。

一、将该表格中的数据以图的形式可视化

image.png

  • 首先导入所需要的包,以及上面信息表所在的路径
from matplotlib import pyplot as plt  # 绘图
import networkx as nx
import pandas as pd  # 读取exal文件
path=r'D:\date\python\study\saveLab\附件1.xlsx'

然后完成图的初始化,将表用pandas读取为DataFrame

将表格信息转换为一个字典,其中key为 边集,表示了边的信息,value为 距离集合,表示了对应的边的距离(权重weight)

再然后就是比较关键的一点,也是细节比较多的一点:

用draw方法绘制图像,这里面的参数信息要搞清楚

pos是以什么样的布局排图,一般有:

  • spectral_layout:根据图的拉普拉斯特征向量排列节点
  • circular_layout:节点在一个圆环上均匀分布
  • random_layout:节点随机分布
  • shell_layout:节点在同心圆上分布
  • spring_layout: 用Fruchterman-Reingold算法排列节点

这五种,然后指定颜色color,这里也可以用 颜色映射条(cmap),然后后面指定相应的映射参数(取多种颜色的话就是 放置一个list作为映射表),代码中使用的是 随机生成1,20范围的随机数 一共14次,因为一共14个点

plt.figure()
plt.subplot(111)
G = nx.Graph()  # 建立一个空的无向图G
DF = pd.read_excel(path)
DF.set_index(DF.columns[0], inplace=True)
DF.fillna(0, inplace=True)
ans = {}
for i in range(1, DF.shape[0] + 1):
    for j in range(1, DF.shape[1] + 1):
        t = (i, j)
        ans[t] = DF.loc[i, j]
for K in list(ans.keys()):
    if ans[K] == 0:
        ans.pop(K)
list(map(lambda e: G.add_edge(*e), list(ans.keys())))
pos = nx.spring_layout(G)
cm = plt.get_cmap('rainbow')
T=list(G.edges)
#fen
nx.draw_networkx_nodes(G, pos=pos, cmap=cm, node_color=[np.random.randint(1, 20) for _ in range(14)])
nx.draw_networkx_edges(G, pos=pos, edge_cmap=cm, edgelist=T,
                       edge_color=[np.random.randint(1, 10) for _ in range(24)])
nx.draw_networkx_labels(G, pos=pos)
# label_options = {"ec": "k", "fc": "white", "alpha": 0.5}
nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=ans, rotate=0)
plt.show()  # 显示一个点Ea

可视化如下所示:

image.png

将一些结点以虚线相连,并且突出9号结点:

list(map(lambda e: G.add_edge(*e), list(ans.keys())))
---------------------------------以下为代码修改部分--------------------------
    E_list2 = [(1, 2), (3, 4), (3, 6), (4, 10), (7, 11), (8, 13), (12, 13)]
    # list(map(lambda X: DEL(X), E_list2))
    pos = nx.spring_layout(G)
    cm = plt.get_cmap('rainbow')
    T=list(G.edges)
    T2=list(G.nodes)
    T2.remove(9)
    nx.draw_networkx_nodes(G, pos=pos, cmap=cm, nodelist=T2, node_color=[np.random.randint(1, 20) for _ in range(13)])
    nx.draw_networkx_nodes(G, pos=pos, cmap=cm, nodelist=[9],node_color='black',node_size=1000,node_shape='*')
    nx.draw_networkx_edges(G, pos=pos, edge_cmap=cm, edgelist=T,
                           edge_color=[np.random.randint(1, 10) for _ in range(24)])
    nx.draw_networkx_edges(G, pos=pos, edge_color='black', edgelist=E_list2, style='--')
    nx.draw_networkx_labels(G, pos=pos)
    nx.draw_networkx_labels(G, pos=pos,labels={9:'9'},font_color='white') #设置表
    nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=ans, rotate=0)
    plt.show()  # 显示一个点Ea
    time-=

这些主要是基于上面的代码做一些修改

image.png

💖写在最后💖

路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!

相关文章
|
9月前
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
9月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
2156 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
9月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
887 0
|
8月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
836 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
8月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
605 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
10月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
674 18
|
9月前
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
9月前
|
机器学习/深度学习 搜索推荐 数据可视化
基于python大数据的音乐可视化与推荐系统
本研究基于Python实现音乐数据采集、清洗、分析与可视化,并结合协同过滤算法构建个性化推荐系统。通过Echarts展示音乐热度及用户偏好,提升用户体验,助力音乐产业智能化发展。

推荐镜像

更多