第七章 时间序列可视化课堂练习

Author

kaka

1 案例数据

1.1 all_stock_2024:工商银行、招商应用、中信证券和贵州茅台四个股票2024各天交易数据

  • data为为日期变量,但该日期变量不规则(不连续),周末和公众假期没有交易数据;

  • 编码名称用于识别不同股票,注意不同股票有交易数据日期不一定一致,但本例种各股票均有242个交易日数据;

  • 开盘价到换手率 均为数值变量,开盘价到成交量与每股资产有关,不同股票间不可比;

  • 交易量的单位为手(百股)、成交额的单位为元,振幅等四个变量均为相对指标。

2 折线图和面积图

2.1 合并折线图

  • 将四只股票的涨跌幅 做作折线图,将四条折线在同一个图形输出;

  • 日期截取2024-9-12024-10-31

  • 添加一条纵轴为0的参考线,采用twodash 的线型;

  • 将图标题改为“合并涨跌幅折线图”。

2.2 分面折线图

  • 将四只股票的收盘 价格做作折线图,将四条折线图分面输出;

  • 日期截取一整年;

  • 并使用ggpol::geom_tshighlight2024-9-12024-10-31 时间段高亮显示

2.3 面积图

  • 将四只股票的收盘 价格做作面积图,将四个面积图分面输出;

  • 将成交量的单位改为万手

2.4 图形观察和代码编写的心得体会

  • 时间序列数据可视化时,日期格式的处理很关键,需要确保日期变量是Date类型

  • 当不同指标的数值范围差异较大时,分面(facet)加上自由刻度(scales=“free”)是非常有效的解决方案

  • 高亮显示特定时间段可以帮助突出显示关键时期的数据特征

  • 面积图适合展示数据的累积效果,但要注意当数据波动较大时可能会影响可读性

  • 数据转换(如单位转换)应该在绘图前完成,而不是在图形美学映射中处理

  • 主题(theme)设置可以统一应用于多个图形,保持风格一致

  • 对于金融数据,参考线(如y=0)能提供重要的基准参考

3 流线图和地平线图

3.1 流线图

  • 将四只股票的交易额 做作流线图,将四个面积图分面输出;

  • 将交易额的单位改为亿元

3.2 地平线图

  • 采用ggHoriPlot::geom_horizon函数,对四只股票的交易额 做作地平线图
  • 设置原点为均值origin='mean',输出配色图例

3.3 图形观察和代码编写的心得体会

  • 流线图能直观展示多个时间序列的整体波动趋势和相对比例关系,特别适合展示金融数据的流动变化

  • 地平线图通过色块高度和颜色变化,可以同时展示多个时间序列相对于基准值的偏离程度,节省垂直空间

  • 数据单位的转换应该在数据预处理阶段完成,确保图形标签和解读的准确性

  • 金融数据通常波动较大,选择合适的带宽(bw)参数对流线图的平滑效果很重要

  • 地平线图的origin参数选择(均值或中位数)会影响图形的解读,需要根据分析目的合理选择

  • 分面(facet)设计可以有效比较多个股票的表现,但要注意保持统一的坐标尺度或明确标注自由尺度

  • 配色方案的选择应考虑数据的含义(如红色通常表示上涨/危险,绿色表示下跌/安全)和色盲友好性

  • 时间序列图形的日期轴标签格式化对可读性至关重要,特别是处理高频金融数据时

4 不规则时间序列图

4.1 数据准备

  • 通过zoo::rollmean 时间收盘价的5天、10天和20天的移动平均

  • 将日期变量转化为id变量

4.2 平滑曲线图

  • 将四只股票收盘价和3种移动平均的折线图分面输出;

  • 横轴的每隔30天一个刻度,只显示月/日;

4.3 K线图

  • 选择工商银行数据作出,2024年的K线图

  • scale_x_continuous 将横轴坐标刻度转化回日期型

4.4 图形观察和代码编写的心得体会

  • 移动平均线是技术分析的重要工具,能有效平滑价格波动,显示趋势方向

  • K线图通过实体和影线直观展示开盘、收盘、最高、最低价的关系,是金融数据分析的核心图表

  • 分面处理可以同时比较多只股票的表现,但要注意保持统一的坐标尺度或明确标注自由尺度

  • 日期轴的处理需要特别注意,连续的交易日数据需要通过索引转换保证图形间距均匀

  • 颜色选择在金融图表中有特定含义(红涨绿跌),应遵循行业惯例

  • 多图表组合时(如K线图与交易量图),需要统一x轴刻度确保时间对齐

  • 技术指标(如不同周期的移动平均线)叠加时,颜色和线型设计要保证可区分性

  • 金融数据可视化要特别注意数据频率(日/周/月)对图表解读的影响