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

Author

221527114柯金余

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 图形观察和代码编写的心得体会

  • 通过这个图可以清晰明了地看出四只股票的成交量差异以及各个股票在一段时间内的变化趋势。

  • 能直观展示不同品种的成交量随时间的变化趋势,尤其适合观察数据的累积效应。

  • 将不同品种分面展示,避免了因量纲差异导致的图形扭曲,每个子图独立缩放,便于对比趋势。

3 流线图和地平线图

3.1 流线图

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

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

3.2 地平线图

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

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

  • 这两个图可以更加直观地对四只股票进行对比。

  • 流线图通过平滑的堆叠面积展示数据,适合呈现时间序列的波动与比例关系。地平线图通过水平色带表示数据偏离基准的程度,适合高密度时间序列对比

  • 不同品种的成交额以流线形式堆叠,能直观反映整体趋势与结构变化(如某些品种成交额占比上升/下降)。

  • 单位转换(成交额/100000000)使数据以“亿元”显示,提升可读性。

  • origin='mean' 以均值为基准,色带向上/向下分别表示高于/低于均值,快速识别异常波动

  • horizonscale=10 控制色带分段数,值越大,颜色过渡越细腻。

4 不规则时间序列图

4.1 数据准备

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

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

4.2 平滑曲线图

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

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

4.3 K线图

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

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

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

  • 使用 rollmean() 计算 5日(MA5)、10日(MA10)、20日(MA20)移动平均线,反映短期、中期趋势。

  • date_index 将日期转换为连续索引,便于 scale_x_continuous 精确控制刻度。

  • 多品种对比facet_wrap(~名称, ncol=2, scales="free") 分面展示不同品种,避免量纲差异干扰。

  • 趋势清晰:收盘价与均线叠加,能直观判断金叉(上涨信号)死叉(下跌信号)

  • 矩形体geom_rect):开盘-收盘价区间,红色(上涨)或绿色(下跌)。

  • 影线geom_segment):最高-最低价区间,反映当日波动幅度。

  • 均线叠加:MA5/MA10/MA20 以不同颜色折线展示,辅助判断趋势。

  • 数据决定图表:移动平均适合趋势分析,K线适合波动分析,选择取决于业务问题。

  • 细节提升专业度:如K线的红涨绿跌、均线的颜色编码,符合金融行业惯例。

  • 代码模块化:将数据预处理(如计算均线)与绘图分离,便于维护和复用。