时间数据的可视化

目录

【实验目的】

【实验原理】

【实验环境】

【实验步骤】

【实验总结】


【实验目的】

  1. 掌握时间数据在大数据中的应用

  2. 掌握时间数据可视化图表表示

  3. 利用Python程序实现堆叠柱形图可视化

【实验原理】

        时间是一个非常重要的维度与属性。时间序列数据存在于社会的各个领域, 如:天文观测数据、气象图像、临床诊断记录等。诊断记录包括病人的每次看病的 病情记录以及心电图等扫描仪器的数据记录等。金融和商业交易记录如股市每天的 交易价格及交易量、超市中每种商品的销售情况等。不管是延续性还是暂时性的时 间数据,可视化的最终的目的就是从中发现趋势。时间型数据包含时间属性,不仅 要表达数据随时间变化的规律,还需表达数据分布的时间规律。它可以分为连续性 和离散型时间数据。

        这里就讲述下离散型数据的堆叠柱形图,堆叠柱形图的几何形状和常规柱形图 很相似,在柱形图中,数据值为并行排列,而在堆叠柱图则是一个个叠加起来的。 它的特点就是如果数据存在子分类,并且这些子分类相加有意义的话,此时就可以 使用堆叠柱形图来表示。本次实验结合本章讲述的堆叠柱形图的列子,这里我们要 画的是极坐标系-堆叠柱状图,也是南丁格尔玫瑰图。由于半径和面积的关系是平方 的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数 值;由于圆形有周期的特性,所以玫瑰图也适用于表示一个周期内的时间概念,比 如星期、月份。下面就用Python程序来实现。

【实验环境】

        OS:Windows 12th Gen Intel(R) Core(TM) i7-12700H   2.30 GHz

        Python:v3.8

【实验步骤】

1.下载数据源(http://datasets.flowingdata.com/hot-dog-places.csv )历年热狗大胃王比赛的前三名的成绩。

hot-dog-places.c sv 里面的数据格式如下:

把hot-dog-places.csv文件保存在自己的目录里面。比如(D:/test/)

2. 打开终端,安装Python所需要的第三方的包,输入

pip install pyecharts

3. 打开pycharm,新建文件,开始编写程序实现极坐标的堆叠柱形图。

from pyecharts import options as opts
from pyecharts.charts import Polar, Page
import csv# 1. 数据读取(处理浮点数值)
filename = "D:\\数据可视化\\hot-dog-places.csv"
datax = []
with open(filename) as f:reader = csv.reader(f)for row in reader:datax.append(row)radius = datax[0]  # 半径轴标签(时间)
# 关键修改:使用 float() 转换后再转 int 避免 ValueError [1,3](@ref)
y1 = [int(float(i)) for i in datax[1]]  # 截断小数处理
y2 = [round(float(i)) for i in datax[2]]  # 四舍五入处理
y3 = [int(float(i)) for i in datax[3]]# 2. 半径表示时间的堆叠图(保持原设计)
c = (Polar().add_schema(radiusaxis_opts=opts.RadiusAxisOpts(data=radius, type_="category"),angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True)).add("A", y1, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#FF6347"))  # 设置颜色为番茄红.add("B", y2, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#4682B4"))  # 设置颜色为钢青.add("C", y3, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#32CD32"))  # 设置颜色为酸橙绿.set_global_opts(title_opts=opts.TitleOpts(title="半径表示时间"),# 添加数据标签显示[5](@ref)tooltip_opts=opts.TooltipOpts(trigger="axis"))
)# 3. 圆边表示时间的堆叠图(优化样式)
d = (Polar().add_schema(angleaxis_opts=opts.AngleAxisOpts(data=radius,type_="category",is_clockwise=True,# 优化标签显示[5](@ref)axislabel_opts=opts.LabelOpts(color="#333", font_size=12)),radiusaxis_opts=opts.RadiusAxisOpts(type_="value",# 添加网格线[7](@ref)splitline_opts=opts.SplitLineOpts(is_show=True))).add("A", y1, type_="bar", stack="stack0",# 设置颜色透明度[2](@ref)itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#FF6347"))  # 设置颜色为番茄红.add("B", y2, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#4682B4"))  # 设置颜色为钢青.add("C", y3, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#32CD32"))  # 设置颜色为酸橙绿.set_global_opts(title_opts=opts.TitleOpts(title="圆边表示时间"),# 添加图例[7](@ref)legend_opts=opts.LegendOpts(pos_left="right"))
)# 4. 合并图表(优化布局)
page = Page(layout=Page.SimplePageLayout)
page.add(c, d)
# 设置页面尺寸[3](@ref)
page.render_options = {"width": "1600px", "height": "800px"}
page.render("render.html")

        最后呈现的图形如下: (这里我们画了两种极坐标的堆叠柱形图,一个是半径表示时间,一个是圆边 表示时间。并把两张图显示在一个render.html里面)

4.对于该数据集,换一种合适的图表方式展示(例如雷达图),并写出相关代码。

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Radar# 加载数据
data = pd.read_csv('hot-dog-places.csv')# 提取年份和数据
years = data.columns.tolist()
values1 = data.iloc[0].tolist()
values2 = data.iloc[1].tolist()
values3 = data.iloc[2].tolist()# 配置雷达图的指标
c_schema = [{"name": year, "max": max(values1[i], values2[i], values3[i]) + 10} for i, year in enumerate(years)]# 创建雷达图
radar = (Radar().add_schema(schema=c_schema).add("数据系列1", [values1], color="#f9713c").add("数据系列2", [values2], color="#b3e4a1").add("数据系列3", [values3], color="#d14a61").set_global_opts(title_opts=opts.TitleOpts(title="历年热狗大胃王比赛的前三名的成绩的雷达图"),legend_opts=opts.LegendOpts(is_show=True),toolbox_opts=opts.ToolboxOpts(is_show=True))
)# 渲染图表
radar.render("hot_dog_places.html")

运行结果如下所示:

【实验总结】

        本次实验通过Python实现堆叠柱形图与雷达图的绘制,可以掌握时间数据处理与可视化方法。实验借助历年热狗大胃王比赛成绩数据集,将时间数据作为关键维度进行分析,通过绘制堆叠柱形图和雷达图,直观展示了比赛成绩随时间的变化趋势,并且成功运用Python的pyecharts库实现了极坐标系下的堆叠柱形图可视化,达成了实验目标。实验中使用Page类将两个堆叠柱形图整合到一个HTML文件中,方便对比和展示。

        实验成功绘制出极坐标系下的堆叠柱形图,直观展示了历年热狗大胃王比赛前三名成绩的变化趋势。半径表示时间的图表突出了不同年份成绩的对比,圆边表示时间的图表则更清晰地展示了各名次成绩在时间周期内的分布。通过雷达图,清晰地呈现了历年热狗大胃王比赛前三名成绩的综合情况,方便对不同年份和名次的成绩进行多维度对比。 本次实验仅针对特定数据集进行了可视化分析。在未来的研究中,可以尝试将实验方法应用于其他类型的时间序列数据,拓展实验的应用范围。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件

Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件 前言一、归档与压缩的基本概念1.1 归档与压缩的区别 二、使用tar创建归档文件2.1 tar命令格式2.2 示例操作 三、使用tar进行压缩3.2 命令格式3.3 示例操作 前言 在红帽 Linux 系…

制造业数字化转型:智能招聘系统破解蓝领用工匹配难题?

近年来,中国制造业面临一个看似矛盾的现象:一边是“用工荒”频发,工厂招不到足够的技术工人;另一边是蓝领求职者抱怨“找工作难”,岗位信息不对称、匹配效率低下。据《数智化平台推动高质量充分就业报告2024》统计&…

解决网络异常 repo sync 中断下载的问题

在使用repo sync下载代码的时候,经常由于网络不稳定等因素导致下载失败,采用循环不断下载的方法,脚步如下: vim ~/bin/repo_sync #!/bin/bash trap echo "ctrlc force exit"; exit SIGINT ALL_PKGgrep project .repo/m…

《MyBatis CRUD实战与核心配置详解:从基础操作到高级应用》

一、使用MyBatis完成CRUD 准备工作 创建module(Maven的普通Java模块):mybatis-002-crud pom.xml 打包方式jar 依赖: mybatis依赖 mysql驱动依赖 junit依赖 logback依赖 mybatis-config.xml放在类的根路径下 CarMapper.xm…

Java语言如何用AI实现文件报告的自动质检?

文件报告的质量直接影响工作效率和决策的准确性,然而,传统的文件质检方式往往依赖人工审核,效率低下且容易出错。那么,如何利用AI技术实现文件报告的自动化质检呢? 问题1:质检的目标是什么? 文…

es自定义ik分词器中文词库实现热更新

基于web地址的方式实现ik分词热更新。 操作系统:win 11 es version:8.6.2 ik version:8.6.2 1、创建web服务,并提供ik查询词库接口 编写分词http url代码,返回自定义分词内容分词词库数据来自业务需求,存…

铂卡梭 智能羽翼 AI 系统:交易科技的未来引擎

突破性的 AI 交易系统 铂卡梭(Pegasus)近期推出的 InnoFeather AI System(智能羽翼 AI 系统) 代表了金融科技领域的前沿突破。这一系统集成了先进的 机器学习算法、大数据分析 和 实时市场情绪感知,旨在帮助交易者在复杂多变的市场环境中做出更精准的决策。 智能羽翼 AI 系统的…

js中判断对象是否包含某个属性(元素)

在JavaScript中,判断对象是否包含某个属性(元素)主要有以下几种方法,根据具体需求选择合适的方式: 1. 使用 in 运算符 作用:检查对象自身及原型链上是否存在指定属性。 示例: javascript cons…

Anaconda和Pycharm的区别,以及如何选择两者

目录 主要区别详细说明如何选择?Anaconda的使用步骤 主要区别 Anaconda 和 PyCharm 是 Python 开发中常用的两个工具,但它们的定位和功能完全不同。以下是它们的主要区别: 对比项AnacondaPyCharm类型Python 发行版 包管理工具Python 集成开…

UE小:在Unreal Engine 5中实现多层静态网格体遮挡拾取

问题描述 当需要拾取被多层静态网格体遮挡的对象时,若所有网格体碰撞预设为BlockAll,需要通过特殊配置实现穿透检测。 完整实现方案 1. 创建自定义追踪通道 进入 ​项目设置(Project Settings) > 碰撞(Collision…

wireshark抓包分析数据怎么看 wireshark使用教程_wireshark怎么看

Wireshark与Sniff Master:网络抓包工具使用指南 网络抓包分析是开发测试和网络故障排查中不可或缺的技能。在众多抓包工具中,Wireshark无疑是最流行且功能强大的选择,而Sniff Master作为后起之秀,也因其简洁高效的特点受到许多专…

密码学基础——古典密码学

目录 一、定义 特点: 二、发展阶段 三、代换密码 1.单表代换密码 1.1恺撒密码 1.2 移位变换 1.3 仿射变换 2.多表代换密码 维吉尼亚密码 四、置换密码 栅栏密码 一、定义 古典密码学是指在现代密码学出现之前,使用较为简单的数学方法和手工…

【案例分享】江苏某汽车制造厂水冷式制冷站AI节能优化方案

主要诉求: 对B系统进行AI节能优化:3台离心机1台螺杆机板式换热器 优化前后对比: ⚫ 优化前:根据人工经验判断冷机和板换的启停,PLC固定逻辑调节参数 ⚫优化后:根据冷负荷对工况进行分类,自动…

vue+springboot 新增操作,前端id传string,后端接收为long类型,报错类型不匹配——解决方法

我在做新增功能的时候,做了一个逻辑判断,当前端没有传递对应的id值时,为新增;有id值时,为修改 问题一、:前端idundefined,和我的需求不符合,我要id为空,不传值。最后发现…

vue前端项目技术架构(第二版)

vue技术架构介绍 如下图所示,展示了项目系统的软件层次架构。该系统采用基于SOA(面向服务架构)思想的分层架构,分为四个主要层次:视图层、编译层、代码层和数据层。 视图层 浏览器:核心职责是解析并展示…

在服务器里面磁盘分区很简单吗?

不管是我们的普通办公电脑还是服务器都是需要硬盘的,硬盘的类型分机械硬盘(HDD)和固态硬盘(SSD),这两种磁盘是我们平常最常见的硬盘您他们又有什么区别 机械硬盘(HDD) 原理&#xff…

Pycharm(十一):字符串练习题

1.输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 练习题1:输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 1.键盘录入字符串&…

虚幻5入门

常用操作 运行时,调试相机,按~键,输入ToggleDebugCamera 。进入自由视角 常用节点 gate节点:用于控制该流程通不通,执不执行。Flip Flop节点:反转执行,一次A,一次B。Set Timer by…

Prompt Flow 与 DSPy:大型语言模型开发的未来

作为一名大模型算法工程师,我一直在探索如何更高效地开发和优化基于大型语言模型(LLM)的应用程序。随着模型规模的不断扩大和应用场景的日益复杂,传统的开发方式已经难以满足高效、灵活和可扩展的需求。幸运的是,Promp…

Prompt攻击是什么

什么是Prompt攻击 Prompt攻击(Prompt Injection/Attack) 是指通过精心构造的输入提示(Prompt),诱导大语言模型(LLM)突破预设安全限制、泄露敏感信息或执行恶意操作的攻击行为。其本质是利用模型对自然语言的理解漏洞,通过语义欺骗绕过防护机制。 Prompt攻击的精髓:学…