一、数据集来源
本次数据来源于2024年的mathorcup杯数学建模比赛的C题的附件二数据,通过excel的数据透视表整理可得每个分拣中心的每天每小时的数据。
二、三维时序图的优势
问题的要求是争对每天每小时的货量进行分析,一般的二维时间序列只能突显出以天数为变量或者以小时为变量,故可视化就会存在局限性,不能够明显地同时考虑在时间的双变量的影响下发生的货量变化。而三维时序图通过将离散的数据点连接可以构建出类似地势的3D图,可以有效地直接观察货量随着时间变化的趋势。
三、结果与分析
代码基于matlab实现,下面贴出简要地针对一个分拣中心某天的数据实现和效果图,如后续有需要,可以加QQ联系我(QQ:3081076288)
clear;clc
% 导入分拣中心30天每时货量
data=xlsread('sc2.xlsx');
% 小时范围
y = 0:23;
% 天数范围
x = 1:30;
[x, y] = meshgrid(x, y); % 将其转成网格格式
z=data(2:end,2:end-1);
mesh(x, y, z)% 绘图之前要确定参数均为网格格式
xlabel('x:天');
ylabel('y:时');
zlabel('Z:货量');
title('SC9过去30天每时的货量');
% 插入颜色栏
colorbar;
colormap(summer);
为了能够更好地展示出3D时序图和一般的时间序列图的区别,下面我也给出2D时序图和实现代码,并针对两类图做对比分析。
import pandas as pd
import matplotlib.pyplot as plt
# 假设你已经有了包含货量的数据集
file_path = r"\附件一支表.xlsx"
df = pd.read_excel(file_path)
# 确保日期列是日期时间类型
df['日期'] = pd.to_datetime(df['日期'])
# 按日期排序数据
df.sort_values(by='日期', inplace=True)
# 将日期列设置为索引
df.set_index('日期', inplace=True)
# 绘制货量时间序列图
plt.figure(figsize=(12, 6)) # 设置图表大小
plt.plot(df.index, df['货量'], label='实际货量') # 绘制实际货量曲线
plt.xlabel('日期') # x轴标签
plt.ylabel('货量') # y轴标签
plt.title('货量时间序列') # 图表标题
plt.legend() # 显示图例
plt.grid(True) # 显示网格
plt.show() # 显示图表
图表展示了不同分拣中心在一段时间内的货量变化趋势。通过直观观察,我们可以明显地发现在11月11日附近的货量有一个显著的峰值。然而,对于每个小时货量波动的细节,仅凭图表的宏观展示是难以捕捉的。为了更细致地分析每小时的货量变化,我们需要更精细的可视化方法来揭示这些微观层面的动态,即3D时序图。