当前位置: 首页 > news >正文

层次与网络的视觉对话:树图与力引导布局的双剑合璧

目录

  • 目的
    • 内容
      • 树图绘制
        • 目的
        • 步骤
        • 参考代码
        • 结果与分析
      • 力引导布局算法
        • 目的
        • 参考代码
        • 结果与分析
  • 总结

目的

  1. 掌握常用可视化软件与工具:学习和熟练使用常用的数据可视化软件和工具,如Matplotlib、Seaborn、Plotly、Tableau等。这些工具提供了用于创建图表、图形和可视化效果的函数和方法,使数据更容易理解和解释。
  2. 能够通过可视化软件或工具进行相关数据可视化操作:掌握如何使用所选的可视化工具来操作和呈现数据。这包括绘制不同类型的图表(例如线图、柱状图、饼图、散点图、热图等)以及进行数据的处理、整理和转换以获得所需的可视化结果。
  3. 了解可视化软件与工具的应用:理解数据可视化工具的应用领域和重要性。数据可视化是数据分析和数据传达的关键组成部分,它可以用于展示趋势、关系、模式和异常,以便做出决策、发现见解或传达信息。在各种领域中,包括业务分析、科学研究、市场营销、医疗保健等,数据可视化都具有广泛的应用。

内容

  1. 气泡图和散点图的对比

    • 气泡图:气泡图是在散点图的基础上增加了一个维度的数据。每个数据点不仅有横纵坐标,还有一个表示大小的圆。圆的大小可以用来表示多出的那一维数据的大小。
    • 散点图:散点图仅使用两个维度的数据,即横纵坐标,用于展示数据点之间的关系。
  2. 茎叶图

    • 思路:将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面。这样可以清楚地看到每个主干后面的几个数,每个数具体是多少。
    • 用途:茎叶图常用于展示数据的分布情况,特别是在小样本数据集中非常有用。
  3. 层次结构数据可视化

    • 树型结构:层次结构可以被抽象成树型(Tree)结构,它是以分支关系定义的非线性结构。
    • 节点-链接法:将单个个体绘制成一个节点,节点之间的连线表示个体之间的层次关系。这种方法直观地展示了层次结构,适用于较小的数据集。
    • 空间填充法:用空间中的分块区域表示数据中的个体,并用外层区域对内层区域的包围表示彼此之间的层次关系。这种方法适用于较大的数据集,可以避免节点-链接法中的交叉和混乱。

树图绘制

目的
  1. 掌握树图的布局方式:了解树图的两种布局方式——正交布局和径向布局,并学会如何设置布局方向。
  2. 熟悉树图的标记图形:了解ECharts提供的标记类型,并学会如何在树图中使用这些标记类型。
  3. 绘制树图:使用PyEcharts库绘制树图,并设置不同的布局方式和标记图形。
步骤
  1. 数据准备

    • 准备一个树形结构的数据集,包含多个层级的节点。
  2. 绘制树图

    • 使用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()
结果与分析
  1. 树图的布局

    • 正交布局:当 layout = 'orthogonal' 时,可以通过 orient 参数设置布局方向。例如,orient="TB" 表示从上到下,orient="LR" 表示从左到右。
    • 径向布局:当 layout = 'radial' 时,树图将以根节点为中心,向外扩展。这种布局方式适合展示层级较深的树形结构。
  2. 标记的图形

    • 通过 symbol 参数可以设置节点的标记图形。例如,symbol="roundRect" 设置节点为圆角矩形。
    • 通过 symbol_size 参数可以设置标记图形的大小。例如,symbol_size=[15, 20] 设置标记图形的宽度为15,高度为20。

在这里插入图片描述

力引导布局算法

目的
  1. 了解力引导布局算法:掌握力引导布局算法的基本原理,了解其只能达到局部优化而不能达到全局优化的特点。
  2. 熟悉力引导布局的改进算法:了解力引导布局的改进算法主要针对效率的优化,优化思路大致分为减少迭代次数和降低每次迭代的时间复杂度。
  3. 实现力引导布局:使用 networkxmatplotlib 库实现力引导布局算法,并绘制图的可视化结果。
参考代码
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()
结果与分析
  1. 力引导布局算法的基本原理

    • 力引导布局算法通过模拟物理系统中的力作用,使节点分布更加自然。每个节点受到吸引力和排斥力的作用,最终达到一个相对稳定的布局。
    • 由于力引导布局算法是一个迭代过程,初始位置对最后优化结果的影响较大。不同的初始位置可能会导致不同的最终布局。
  2. 力引导布局的改进算法

    • 减少迭代次数:通过预处理或启发式方法减少需要迭代的次数,例如使用多尺度方法或基于密度的方法。
    • 降低每次迭代的时间复杂度:通过优化力的计算方法,减少每次迭代的时间复杂度,例如使用 Barnes-Hut 近似方法。
  3. 实验结果

    • 使用 spring_layout 函数生成的力引导布局图显示了节点的自然分布。节点之间的距离适中,避免了节点重叠,使得图的结构清晰可见。

在这里插入图片描述

总结

新的一天开始了,希望我们今天充满活力和灵感!无论是继续进行数据可视化的实验,还是有其他的工作和学习计划,愿这一天都能带给我们新的收获和进步。

http://www.lryc.cn/news/476217.html

相关文章:

  • python将数据集中所有文件名升序制作txt文件(医学影像)
  • 【The Art of Unit Testing 3_自学笔记06】3.4 + 3.5 单元测试核心技能之:函数式注入与模块化注入的解决方案简介
  • 【VSCode】配置
  • Linux 常用命令整理大全及命令使用心得
  • 计算器的实现
  • 这个工具帮你快速实现数据集成和同步
  • 论文阅读:Computational Long Exposure Mobile Photography (一)
  • 项目解决方案:多地连锁药店高清视频监控系统建设解决方案(设计方案)
  • utf-8、pbkdf2_sha
  • Java之包,抽象类,接口
  • HarmonyOS鸿蒙开发入门,常用ArkUI组件学习(二)
  • 斩!JavaScript语法进阶
  • UFO:Windows操作系统的具象智能代理
  • win10/11无休眠设置和断电后电池模式自动休眠而不是睡眠-用以省电
  • 【动态规划之斐波那契数列模型】——累加递推型动态规划
  • 5g通信系统用到的crc码
  • Ubuntu-22.04 虚拟机安装
  • Windows、Linux系统上进行CPU和内存压力测试
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发八,使用SDLVSQT显示yuv文件 ,使用ffmpeg的AVFrame
  • HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解
  • css简写属性
  • 力扣刷题(sql)--零散知识点(2)
  • TCP是怎样工作的网络拥塞控制理论和算法部分记录
  • CSRF初级靶场
  • CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9904 :Mieszanie kolorów
  • Java | Leetcode Java题解之第525题连续数组
  • YOLOv8改进 - 注意力篇 - 引入iRMB注意力机制
  • 项目学习总结
  • 用于低成本接收机的LoRa SF11 500KHz波形检测解调算法
  • WEB防护