目录
一、实验名称
时间数据的可视化
二、实验目的
1.掌握时间数据在大数据中的应用
2.掌握时间数据可视化图表表示
3. 利用Python程序实现堆叠柱形图可视化
三、实验原理
时间是一个非常重要的维度与属性。时间序列数据存在于社会的各个领域, 如:天文观测数据、气象图像、临床诊断记录等。诊断记录包括病人的每次看病的 病情记录以及心电图等扫描仪器的数据记录等。金融和商业交易记录如股市每天的 交易价格及交易量、超市中每种商品的销售情况等。不管是延续性还是暂时性的时 间数据,可视化的最终的目的就是从中发现趋势。时间型数据包含时间属性,不仅要表达数据随时间变化的规律,还需表达数据分布的时间规律。它可以分为连续性 和离散型时间数据。 这里就讲述下离散型数据的堆叠柱形图,堆叠柱形图的几何形状和常规柱形图 很相似,在柱形图中,数据值为并行排列,而在堆叠柱图则是一个个叠加起来的。它的特点就是如果数据存在子分类,并且这些子分类相加有意义的话,此时就可以使用堆叠柱形图来表示。本次实验结合本章讲述的堆叠柱形图的列子,这里我们要画的是极坐标系-堆叠柱状图,也是南丁格尔玫瑰图。由于半径和面积的关系是平方 的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数值;由于圆形有周期的特性,所以玫瑰图也适用于表示一个周期内的时间概念,比如星期、月份。下面就用Python程序来实现。
四、实验环境
OS:Windows
Python:v3.9
五、实验步骤
1. 下载数据源(hot-dog-places.csv )历年热狗大胃王比赛的前三名的成绩。查看该数据集:

2. 打开cmd,输入pip install pyecharts,安装pyecharts包。

3. 打开Pycharm,编写程序实现极坐标的堆叠柱形图,展示两种极坐标的堆叠柱形图,一个是半径表示时间,一个是圆边表示时间。并把两张图显示在一个render.html里面。代码如下图所示:
import pyecharts.options as opts
from pyecharts.charts import Polar,Page
import csv
filename = "C:/Users/sun'yi'zhe/Downloads/hot-dog-places.csv"
data_x = []
data_y = []
with open(filename) as f:
   reader = csv.reader(f)
   for data_row in reader:
      data_x.append(data_row)
x = data_x[0]
print(x)
y1 = data_x[1]
y1 = [float(i) for i in y1]
y2 = [float(i) for i in data_x[2]]
y3 = [float(i) for i in data_x[3]]
def polar_datazoom_slider():
    c = (
        Polar(init_opts=opts.InitOpts(width="600px", height="500px"))
        .add_schema(radiusaxis_opts=opts.RadiusAxisOpts(data=x),
                    angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True))
        .add("A", y1, type_="bar", stack="stack0")
        .add("B", y2, type_="bar", stack="stack0")
        .add("C", y3, type_="bar", stack="stack0")
        .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图例1"))
)
    return c
def polar_datazoom():
    c2 = (
        Polar(init_opts=opts.InitOpts(width="600px", height="500px"))
        .add_schema(angleaxis_opts=opts.AngleAxisOpts(data=x, is_clockwise=True))
        .add("A", y1, type_="bar", stack="stack0")
        .add("B", y2, type_="bar", stack="stack0")
        .add("C", y3, type_="bar", stack="stack0")
        .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图例2"))
)
    return c2
def page_draggable_layout():
    page = Page()
    page.add(
        polar_datazoom_slider(),
        polar_datazoom()
    )
    page.render("极坐标系-堆叠柱状图.html")
if __name__ == "__main__":
    page_draggable_layout()4.运行结果如下:


通过堆叠柱形图能够展示每年的总热狗消耗量及分布。
5.对于该数据集,换一种合适的图表方式展示,这里选择折线图,使用折线图能够更清晰地显示每名选手的成绩变化趋势。
import matplotlib.pyplot as plt
import csv
from pylab import mpl
# 设置中文显示字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
years = []
first = []
second = []
third = []
with open("C:/Users/sun'yi'zhe/Downloads/hot-dog-places.csv") as f:
    reader = csv.reader(f)
    years = next(reader)[1:]  # 跳过第一列
    for row in reader:
        if not row[0]:  # 如果第一列是空的
            continue
        data = [float(x) if x else 0 for x in row[1:]]  # 转换为浮点数
        if len(first) == 0:
            first = data
        elif len(second) == 0:
            second = data
        elif len(third) == 0:
            third = data
plt.figure(figsize=(12, 6))
plt.plot(years, first, marker='o', label='第一名', color='gold')
plt.plot(years, second, marker='o', label='第二名', color='silver')
plt.plot(years, third, marker='o', label='第三名', color='peru')
plt.title('热狗大胃王比赛成绩趋势(2000-2010)')
plt.xlabel('年份')
plt.ylabel('热狗数量')
plt.legend()
plt.grid(linestyle='--', alpha=0.7)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()运行结果:

通过折线图能够看到历年前三名选手的成绩呈上升趋势。
六、实验心得
在本次时间数据的可视化实验中,我学习了时间数据以及它的可视化图表表示。在实验过程中,我分别使用堆叠柱状图和折线图对时间数据进行可视化,并对两者的效果进行了对比,堆叠柱状图能同时展示每年的总成绩和各个选手的贡献,而折线图能够显示每名选手的成绩变化趋势。通过本次实验,我学会了利用Python程序实现堆叠柱形图可视化,掌握了时间数据在大数据中的应用,并掌握了时间数据的可视化图表表示。
 
                   
                   
                   
                   
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   9071
					9071
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            