层次与网络的视觉对话:树图与力引导布局的双剑合璧
目录
- 目的
- 内容
- 树图绘制
- 目的
- 步骤
- 参考代码
- 结果与分析
- 力引导布局算法
- 目的
- 参考代码
- 结果与分析
- 总结
目的
- 掌握常用可视化软件与工具:学习和熟练使用常用的数据可视化软件和工具,如Matplotlib、Seaborn、Plotly、Tableau等。这些工具提供了用于创建图表、图形和可视化效果的函数和方法,使数据更容易理解和解释。
- 能够通过可视化软件或工具进行相关数据可视化操作:掌握如何使用所选的可视化工具来操作和呈现数据。这包括绘制不同类型的图表(例如线图、柱状图、饼图、散点图、热图等)以及进行数据的处理、整理和转换以获得所需的可视化结果。
- 了解可视化软件与工具的应用:理解数据可视化工具的应用领域和重要性。数据可视化是数据分析和数据传达的关键组成部分,它可以用于展示趋势、关系、模式和异常,以便做出决策、发现见解或传达信息。在各种领域中,包括业务分析、科学研究、市场营销、医疗保健等,数据可视化都具有广泛的应用。
内容
-
气泡图和散点图的对比
- 气泡图:气泡图是在散点图的基础上增加了一个维度的数据。每个数据点不仅有横纵坐标,还有一个表示大小的圆。圆的大小可以用来表示多出的那一维数据的大小。
- 散点图:散点图仅使用两个维度的数据,即横纵坐标,用于展示数据点之间的关系。
-
茎叶图
- 思路:将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面。这样可以清楚地看到每个主干后面的几个数,每个数具体是多少。
- 用途:茎叶图常用于展示数据的分布情况,特别是在小样本数据集中非常有用。
-
层次结构数据可视化
- 树型结构:层次结构可以被抽象成树型(Tree)结构,它是以分支关系定义的非线性结构。
- 节点-链接法:将单个个体绘制成一个节点,节点之间的连线表示个体之间的层次关系。这种方法直观地展示了层次结构,适用于较小的数据集。
- 空间填充法:用空间中的分块区域表示数据中的个体,并用外层区域对内层区域的包围表示彼此之间的层次关系。这种方法适用于较大的数据集,可以避免节点-链接法中的交叉和混乱。
树图绘制
目的
- 掌握树图的布局方式:了解树图的两种布局方式——正交布局和径向布局,并学会如何设置布局方向。
- 熟悉树图的标记图形:了解ECharts提供的标记类型,并学会如何在树图中使用这些标记类型。
- 绘制树图:使用PyEcharts库绘制树图,并设置不同的布局方式和标记图形。
步骤
-
数据准备
- 准备一个树形结构的数据集,包含多个层级的节点。
-
绘制树图
- 使用PyEcharts库绘制树图,并设置不同的布局方式和标记图形。
参考代码
from pyecharts import options as opts
from pyecharts.charts import Tree# 树形结构数据
data = [{"children": [{"name": "B"},{"children": [{"children": [{"name": "I"}], "name": "E"}, {"name": "F"}],"name": "C",},{"children": [{"children": [{"name": "J"}, {"name": "K"}], "name": "G"},{"name": "H"},],"name": "D",},],"name": "A",}
]# 创建树图
c = (Tree().add("",data,orient="TB", # 设置布局方向为从上到下layout="radial", # 设置布局方式为径向布局symbol="roundRect", # 设置标记图形为圆角矩形symbol_size=[15, 20], # 设置标记图形的大小).set_global_opts(title_opts=opts.TitleOpts(title="Tree-基本示例"))
)# 渲染树图
c.render_notebook()
结果与分析
-
树图的布局
- 正交布局:当
layout = 'orthogonal'时,可以通过orient参数设置布局方向。例如,orient="TB"表示从上到下,orient="LR"表示从左到右。 - 径向布局:当
layout = 'radial'时,树图将以根节点为中心,向外扩展。这种布局方式适合展示层级较深的树形结构。
- 正交布局:当
-
标记的图形
- 通过
symbol参数可以设置节点的标记图形。例如,symbol="roundRect"设置节点为圆角矩形。 - 通过
symbol_size参数可以设置标记图形的大小。例如,symbol_size=[15, 20]设置标记图形的宽度为15,高度为20。
- 通过

力引导布局算法
目的
- 了解力引导布局算法:掌握力引导布局算法的基本原理,了解其只能达到局部优化而不能达到全局优化的特点。
- 熟悉力引导布局的改进算法:了解力引导布局的改进算法主要针对效率的优化,优化思路大致分为减少迭代次数和降低每次迭代的时间复杂度。
- 实现力引导布局:使用
networkx和matplotlib库实现力引导布局算法,并绘制图的可视化结果。
参考代码
import networkx as nx
import matplotlib.pyplot as plt# 创建一个简单的图
G = nx.Graph()
G.add_edges_from([(1, 2), (2, 3), (3, 4), (4, 5), (5, 1), (1, 3), (2, 4)])# 使用力引导布局算法
pos = nx.spring_layout(G)# 绘制图
plt.figure(figsize=(8, 6))
nx.draw(G, pos=pos, with_labels=True, node_size=800, node_color='lightblue', edge_color='gray', node_shape='o')
plt.title("Fruchterman-Reingold Layout")
plt.show()
结果与分析
-
力引导布局算法的基本原理
- 力引导布局算法通过模拟物理系统中的力作用,使节点分布更加自然。每个节点受到吸引力和排斥力的作用,最终达到一个相对稳定的布局。
- 由于力引导布局算法是一个迭代过程,初始位置对最后优化结果的影响较大。不同的初始位置可能会导致不同的最终布局。
-
力引导布局的改进算法
- 减少迭代次数:通过预处理或启发式方法减少需要迭代的次数,例如使用多尺度方法或基于密度的方法。
- 降低每次迭代的时间复杂度:通过优化力的计算方法,减少每次迭代的时间复杂度,例如使用 Barnes-Hut 近似方法。
-
实验结果
- 使用
spring_layout函数生成的力引导布局图显示了节点的自然分布。节点之间的距离适中,避免了节点重叠,使得图的结构清晰可见。
- 使用

总结
新的一天开始了,希望我们今天充满活力和灵感!无论是继续进行数据可视化的实验,还是有其他的工作和学习计划,愿这一天都能带给我们新的收获和进步。
相关文章:
层次与网络的视觉对话:树图与力引导布局的双剑合璧
目录 目的内容树图绘制目的步骤参考代码结果与分析 力引导布局算法目的参考代码结果与分析 总结 目的 掌握常用可视化软件与工具:学习和熟练使用常用的数据可视化软件和工具,如Matplotlib、Seaborn、Plotly、Tableau等。这些工具提供了用于创建图表、图…...
python将数据集中所有文件名升序制作txt文件(医学影像)
import os import re # 设定图像文件所在的路径 img_path ./2d/images/ #需修改路径 # 获取该路径下的所有文件名 img_list os.listdir(img_path) # 过滤出以.nii结尾的文件名 nii_list [f for f in img_list if f.endswith(.nii)] # 使用正则表达式从文件名中提…...
【The Art of Unit Testing 3_自学笔记06】3.4 + 3.5 单元测试核心技能之:函数式注入与模块化注入的解决方案简介
文章目录 3.4 函数式依赖注入技术 Functional injection techniques3.5 模块化依赖注入技术 Modular injection techniques 写在前面 上一篇的最后部分对第三章后续内容做了一个概括性的梳理,并给出了断开依赖项的最简单的实现方案,函数参数值注入法。本…...
【VSCode】配置
安装插件 C vscode-icons gdb调试 https://www.bilibili.com/video/BV15U4y1x7b2/?spm_id_from333.999.0.0&vd_sourcedf0ce73d9b9b61e6d4771898f1441f7f https://www.bilibili.com/video/BV1pU4y1W74Z?spm_id_from333.788.recommend_more_video.-1&vd_sourcedf0…...
Linux 常用命令整理大全及命令使用心得
本文章是为了总结自己用过的命令,以及一些心得,网上有很多类似的,但自己总结才能更好的理解。 文章目录 一、文件和目录管理01、 ls :列出目录内容02、cd:更改当前目录03、pwd:显示当前工作目录04、mkdir&a…...
计算器的实现
计算器的⼀般实现 计算器的一般实现:优化:使⽤函数指针数组的实现: 计算器的一般实现: #include <stdio.h> int add(int a, int b) {return a b; } int sub(int a, int b) {return a - b; } int mul(int a, int b) {retur…...
这个工具帮你快速实现数据集成和同步
在这个信息爆炸的时代,数据的流动和同步逐渐成为企业运营的命脉。然而,企业正面临着前所未有的数据挑战,无论是跨地域的分公司协作,还是云服务与本地数据库的交互,数据的集成、清洗、转换和加载(ETL&#x…...
论文阅读:Computational Long Exposure Mobile Photography (一)
这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或…...
项目解决方案:多地连锁药店高清视频监控系统建设解决方案(设计方案)
目录 一.项目背景 1.1背景描述 1.2需求分析 二.设计依据和建设目标 2.1设计依据 2.2建设目标 三.系统设计实现 3.1系统方案设计 3.2网络组网说明 四.建设系统特色 4.1安全性 4.2节约建设成本 4.3原有资源的再利用 4.4可扩展性 五.产品介绍 5.1概述 5.2设备…...
utf-8、pbkdf2_sha
#utf-8加密、解密 import base64 base64.b64encode(lienlien123.encode(utf-8)) bbGllbmxpZW4xMjM base64.b64decode(bbGllbmxpZW4xMjM.decode(utf-8)) blienlien123 #pbkdf2_sha加密,校验 # 该种密码在不同时刻会有产生不同的加密结果 # 该加密方法使用的是散列…...
Java之包,抽象类,接口
目录 包 导入包 静态导入 将类放入包 常见的系统包 抽象类 语法规则 注意事项: 抽象类的作用 接口 实现多个接口 接口间的继承 接口使用实例 (法一)实现Comparable接口的compareTo()方法 (法二)实现Comp…...
HarmonyOS鸿蒙开发入门,常用ArkUI组件学习(二)
书接上回,让我们继续来学习ArkUI的其他组件 目录,可以点击跳转到想要了解的组件详细内容 组件四:Button组件五:Slider组件六: Column & Row组件七:循环控制组件八: List 组件四:…...
斩!JavaScript语法进阶
一、DOM 概述 DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model)。当网页被加载时,浏览器将网页转为一个DOM,并用JS进行各种操作。比如:改变页面中的HTML 元素及其属性&am…...
UFO:Windows操作系统的具象智能代理
近年来,随着AI技术的发展,智能代理在各种应用中扮演着越来越重要的角色。微软推出的UFO(User-Focused Operator)正是这样一个出色的多代理框架,旨在通过无缝导航和操作,满足用户在Windows操作系统中跨多个应…...
win10/11无休眠设置和断电后电池模式自动休眠而不是睡眠-用以省电
1、打开休眠设置选项 打开控制面板\所有控制面板项\电源选项\ 左侧的选择电源按钮的功能 默认状态没有休眠 1、管理员权限打开cmd或者power shell 2、输入一下指令,打开休眠选项 powercfg -hibernate on关闭后重新打开 控制面板\所有控制面板项\电源选项\左侧的选…...
【动态规划之斐波那契数列模型】——累加递推型动态规划
文章目录 第N个泰波那契数列面试题08.01.三步问题使用最小花费爬楼梯解码问题 第N个泰波那契数列 解题思路: 泰波那契数列的第 N 项定义为前面三项之和,即 T0 0, T1 1, T2 1,从 T3 开始,每一项都等于前三项的和。要找到第 N 项…...
5g通信系统用到的crc码
5g通信系统用到的crc码 关注 在5G通信系统中,CRC码(循环冗余校验码)扮演着关键角色,它通过执行多项式除法运算来检测数据在传输过程中是否发生错误。5G通信系统中采用了多种CRC码,每种码都有其独特的计算方法和校验特…...
Ubuntu-22.04 虚拟机安装
1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装:通过将 Ubuntu 镜像刻录到光盘,在计算机 BIOS/UEFI 中设置光盘为第一启动项,然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…...
Windows、Linux系统上进行CPU和内存压力测试
CPU和内存压力测试 1. Linux环境 Linux环境下,我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发八,使用SDLVSQT显示yuv文件 ,使用ffmpeg的AVFrame
一. AVFrame 核心回顾,uint8_t *data[AV_NUM_DATA_POINTERS] 和 int linesize[AV_NUM_DATA_POINTERS] AVFrame 存储的是解码后的数据,(包括音频和视频)例如:yuv数据,或者pcm数据,参考AVFrame结…...
2026亚洲消费电子展!媒体曝光资源加码
北京讯——2026年6月10日至12日,2026亚洲消费电子展将在北京盛大启幕。作为亚太消费电子领域极具影响力的行业盛会,本届展会全面升级品牌传播矩阵,百家主流媒体集结现场全程报道,全媒体曝光资源重磅加码。目前展会赞助合作席位余量…...
CircuitPython displayio与触摸交互实战:复刻经典Neko猫咪动画
1. 项目概述与核心价值如果你玩过一些复古的掌机或者小型的嵌入式设备,可能会对屏幕上那只跟着你手指或光标跑的“Neko猫咪”有印象。这个源自上世纪经典屏保的小动画,在今天看来,依然是学习嵌入式图形和交互编程的绝佳入门项目。它麻雀虽小&…...
ARM Cortex-M3位带操作原理与W55MH32 GPIO实战应用
1. 从51到ARM:为什么我们需要“位带操作”?如果你是从51单片机转过来玩ARM Cortex-M3内核的,比如WIZnet这颗W55MH32,那你肯定对sbit P1_0 P1^0;这种写法再熟悉不过了。在51上,想单独控制一个IO口的高低电平࿰…...
Go语言开发利器:gocode代码补全与定义跳转原理与实践
1. 项目概述:一个为Go语言开发者准备的“瑞士军刀”如果你是一名Go语言开发者,或者正在学习Go,那么你一定遇到过这样的场景:在阅读一个开源项目时,面对一个陌生的函数或方法,你迫切想知道它的定义在哪里、它…...
【资讯】《二〇二五年中国知识产权保护状况》白皮书正式发布
2026年5月7日,《二〇二五年中国知识产权保护状况》白皮书正式发布,呈现了2025年中国知识产权保护工作进展,系统介绍制度建设、审批登记、文化建设、国际合作等方面的扎实成果,为社会各界和国际社会了解中国知识产权保护最新实践提…...
PlantUML Editor:5分钟学会用代码绘制专业UML图的终极工具
PlantUML Editor:5分钟学会用代码绘制专业UML图的终极工具 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为复杂的UML图表绘制而烦恼吗?PlantUML Editor是一款…...
基于RAG与LLM的智能文献分析工具OpenResearcher:从部署到实战全解析
1. 项目概述:一个为研究者量身打造的AI驱动开源工具箱 如果你是一名科研工作者、学术写手,或者任何需要深度处理文献、进行系统性知识梳理的人,那么你大概率经历过这样的场景:面对海量的PDF文献,手动下载、整理、阅读、…...
不只是安装:在龙芯2k1000LA上为Loongnix配置WiFi、蓝牙与触摸屏驱动的完整流程
龙芯2k1000LA开发板外设驱动深度配置指南:从WiFi到触摸屏的全栈解决方案 在国产化硬件开发领域,龙芯2k1000LA开发板凭借其完全自主的LoongArch架构,正成为物联网和嵌入式设备开发者的重要选择平台。不同于x86架构的"开箱即用"体验&…...
Adafruit Bluefruit LE模块AT命令实战:从BLE透传到Eddystone信标与HID设备开发
1. 项目概述与核心价值如果你正在开发一个需要无线连接功能的物联网设备、可穿戴设备或者创意交互项目,那么蓝牙低功耗(BLE)技术几乎是一个绕不开的选择。它功耗低、连接快,并且被现代智能手机和电脑广泛支持。然而,直…...
基于SpringAI开发的通用RAG脚手框架,适配各种场景
RAG 业务落地开发指导 本文面向后续把这套 RAG 能力接入业务系统的开发者,重点回答三件事: 上游业务请求怎么进入 RAG。RAG 内部各组件怎么串起来。数据分别存到 MySQL、文件存储、向量库和搜索引擎的哪里。 1. 总体边界 独立工程保留的是一套完整 R…...
