提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
时间数据的可视化
一、实验目的
1.掌握时间数据在大数据中的应用
2.掌握时间数据可视化图表表示
3. 利用Python程序实现堆叠柱形图可视化
二、实验原理
时间是一个非常重要的维度与属性。时间序列数据存在于社会的各个领域,
如:天文观测数据、气象图像、临床诊断记录等。诊断记录包括病人的每次看病的病情记录以及心电图等扫描仪器的数据记录等。金融和商业交易记录如股市每天的交易价格及交易量、超市中每种商品的销售情况等。不管是延续性还是暂时性的时间数据,可视化的最终的目的就是从中发现趋势。时间型数据包含时间属性,不仅要表达数据随时间变化的规律,还需表达数据分布的时间规律。它可以分为连续性和离散型时间数据。
这里就讲述下离散型数据的堆叠柱形图,堆叠柱形图的几何形状和常规柱形图很相似,在柱形图中,数据值为并行排列,而在堆叠柱图则是一个个叠加起来的。它的特点就是如果数据存在子分类,并且这些子分类相加有意义的话,此时就可以使用堆叠柱形图来表示。本次实验结合本章讲述的堆叠柱形图的列子,这里我们要画的是极坐标系-堆叠柱状图,也是南丁格尔玫瑰图。由于半径和面积的关系是平方的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数值;由于圆形有周期的特性,所以玫瑰图也适用于表示一个周期内的时间概念,比如星期、月份。下面就用Python程序来实现
三、实验环境
OS:Windows
Python:v3.11.9
四、实验步骤
1.下载数据源(http://datasets.flowingdata.com/hot-dog-places.csv)历年热狗大胃王比赛的前三名的成绩。
2.打开cmd,安装Python所需要的第三方的包,输入pip install pyecharts
3.打开Python3.11.9 IDLE
打开new file
在上面的界面开始编写程序。
4开始编写程序实现极坐标的堆叠柱形图
最后呈现的图形如下:
(这里我们画了两种极坐标的堆叠柱形图,一个是半径表示时间,一个是圆边表示时间。并把两张图显示在一个render.html里面)
Python中画图表的包有好几种这里我们就用了其中一种(pyecharts)。
5.对于该数据集,请换一种合适的图表方式展示,并写出相关代码
(1)柱状图:
import matplotlib.pyplot as plt
from pyecharts.charts import Bar, Page
from pyecharts import options as opts
import csv
import webbrowser # 新增:用于自动打开浏览器
import os # 新增:用于检查文件路径
page = Page()
with open(“E:/EDG浏览器/hot-dog-places.csv”) as f:
reader = csv.reader(f)
data = list(reader)
years = data[0]
y1, y2, y3 = [list(map(float, i)) for i in data[1:4]]
bar1 = (
Bar(init_opts=opts.InitOpts(width=“1200px”, height=“600px”))
.add_xaxis(years)
.add_yaxis(“Series1”, y1)
.add_yaxis(“Series2”, y2)
.add_yaxis(“Series3”, y3)
.set_global_opts(title_opts=opts.TitleOpts(title=“柱状图示例1”))
)
bar2 = (
Bar(init_opts=opts.InitOpts(width=“1200px”, height=“600px”))
.add_xaxis(years)
.add_yaxis(“Series1”, y1, stack=“stack1”)
.add_yaxis(“Series2”, y2, stack=“stack1”)
.add_yaxis(“Series3”, y3, stack=“stack1”)
.set_global_opts(title_opts=opts.TitleOpts(title=“堆叠柱状图示例2”))
)
page.add(bar1, bar2)
output_file = “bar_charts.html” # 定义输出文件名
page.render(output_file)
webbrowser.open_new_tab(f"file://{os.path.abspath(output_file)}")
(2)雷达图
五、实验心得:
在本次实验中,我学习了如何使用 Python 和 pyecharts 库来处理和可视化时间序列数据。通过创建极坐标系堆叠柱状图、柱状图和雷达图,我不仅掌握了时间数据在大数据中的应用,还学会了如何使用不同的图表来表示时间数据。
时间数据的可视化是数据分析中的一个重要方面,它可以帮助我们发现数据的趋势和模式。在实际应用中,我可能会遇到不同类型的时间数据,如连续型和离散型数据。选择合适的图表类型来展示这些数据是非常重要的,因为它可以更直观地传达信息。
六、时间数据的可视化的拓展
- 时间序列分解
时间序列分解是将时间序列数据分解为趋势、季节性和随机成分的方法。这有助于更好地理解数据的长期趋势和周期性变化。常用的分解方法包括:
加法模型:趋势 + 季节性 + 随机
乘法模型:趋势 × 季节性 × 随机 - 动态可视化
动态可视化(或交互式可视化)允许用户通过交互来探索数据。例如,用户可以选择特定的时间范围、变量或数据点来查看详细信息。这可以通过使用 JavaScript 库(如 D3.js)或 Python 库(如 Plotly 或 Bokeh)来实现。 - 多变量时间序列
在许多情况下,我们可能需要同时分析多个时间序列。这可以通过创建多面板图、平行坐标图或使用颜色编码来区分不同的时间序列来实现。 - 异常检测
在时间序列数据中,异常值或突变点可能表示重要的事件或错误。使用可视化技术(如箱线图、控制图或热力图)可以帮助识别这些异常。 - 预测和预测可视化
时间序列预测是预测未来值的重要工具。预测结果可以通过添加到现有时间序列图中来可视化,通常使用不同的颜色或线型来区分预测值和实际值。 - 时间序列聚类
时间序列聚类是将相似的时间序列分组的方法。这可以帮助识别数据中的模式或群体。聚类结果可以通过颜色编码或图形化聚类结构来可视化。 - 时间序列数据库和可视化工具
使用专门设计的时间序列数据库(如 InfluxDB)和可视化工具(如 Grafana)可以有效地存储、查询和可视化大规模的时间序列数据。 - 实时数据可视化
对于需要实时监控的数据(如股票价格、网络流量),实时数据可视化是必不可少的。这可以通过使用 WebSockets、Server-Sent Events 或其他实时数据传输技术来实现。