第七章 时间序列可视化课堂练习
1 案例数据
1.1 all_stock_2024:工商银行、招商应用、中信证券和贵州茅台四个股票2024各天交易数据
data为为日期变量,但该日期变量不规则(不连续),周末和公众假期没有交易数据;编码和名称用于识别不同股票,注意不同股票有交易数据日期不一定一致,但本例种各股票均有242个交易日数据;开盘价到换手率均为数值变量,开盘价到成交量与每股资产有关,不同股票间不可比;交易量的单位为手(百股)、成交额的单位为元,振幅等四个变量均为相对指标。
2 折线图和面积图
2.1 合并折线图
将四只股票的
涨跌幅做作折线图,将四条折线在同一个图形输出;日期截取
2024-9-1到2024-10-31;添加一条纵轴为0的参考线,采用
twodash的线型;将图标题改为“合并涨跌幅折线图”。
2.2 分面折线图
将四只股票的
收盘价格做作折线图,将四条折线图分面输出;日期截取一整年;
并使用
ggpol::geom_tshighlight将2024-9-1到2024-10-31时间段高亮显示
2.3 面积图
将四只股票的
收盘价格做作面积图,将四个面积图分面输出;将成交量的单位改为万手
2.4 图形观察和代码编写的心得体会
2.4.0.1 一、数据预处理要点
日期筛选与转换
使用
filter()精确截取时间段(如 2024-09-01 至 2024-10-31),确保数据时效性需将日期列转换为 Date 类型(
as.Date()),避免绘图时出现轴标签异常
单位换算
成交量 / 额等金融数据常需转换单位(如万手、亿元),提升可读性
使用
mutate()创建新列进行单位换算,避免直接修改原始数据
2.4.0.2 二、可视化设计技巧
合并折线图优化
通过
geom_hline(yintercept = 0)添加参考线,辅助分析涨跌趋势使用
theme()调整图例位置(如legend.position = c(0.1, 0.8)),避免遮挡数据采用
scale_color_manual()自定义颜色方案,增强辨识度
分面图的应用
使用
facet_wrap()按股票名称分面展示,实现多组数据并行比较设置
scales = "free_y"使各子图 Y 轴独立,避免因数值范围差异导致的视觉偏差通过
ggpol::geom_tshighlight()高亮特定时间段,突出关键数据区间
面积图的特性
面积图适合展示数据累积效应,但需注意:
数据存在负值时可能导致面积重叠(可通过
geom_ribbon()替代)多类别面积图需确保颜色透明度(
alpha参数),避免底层数据被遮挡
2.4.0.3 三、常见问题与解决方案
日期轴标签问题
使用
scale_x_date()配合date_breaks和date_labels精确控制刻度间隔与格式针对长时间段数据,可结合
theme(axis.text.x = element_text(angle = 45))避免标签重叠
缺失值处理
移动平均线计算会产生 NA 值,需通过
filter(!is.na())或na.omit()过滤使用
geom_line(na.rm = TRUE)在绘图时忽略 NA 值,保持线条连续性
图例优化
分面图中重复图例易造成冗余,可通过
theme(legend.position = "none")移除使用
labs()自定义标题、轴标签和图例名称,提升图表自解释性
3 流线图和地平线图
3.1 流线图
将四只股票的
交易额做作流线图,将四个面积图分面输出;将交易额的单位改为亿元
3.2 地平线图
- 采用
ggHoriPlot::geom_horizon函数,对四只股票的交易额做作地平线图 - 设置原点为均值
origin='mean',输出配色图例
3.3 图形观察和代码编写的心得体会
4 不规则时间序列图
4.1 数据准备
通过
zoo::rollmean时间收盘价的5天、10天和20天的移动平均将日期变量转化为
id变量
4.2 平滑曲线图
将四只股票收盘价和3种移动平均的折线图分面输出;
横轴的每隔30天一个刻度,只显示月/日;
4.3 K线图
选择工商银行数据作出,2024年的K线图
scale_x_continuous将横轴坐标刻度转化回日期型
4.4 图形观察和代码编写的心得体会
4.4.1 数据整理技巧
宽转长格式处理:通过
gather()函数将收盘价与各移动平均线数据从宽格式转换为长格式,为后续ggplot绘图提供标准数据结构。列选择策略:利用
select()函数精准筛选目标列,剔除冗余信息。
4.4.2 可视化实现要点
分面展示设计:借助
facet_wrap()实现分面绘图,搭配scale="free"参数使各子图独立设置 Y 轴范围,提升多维度数据的可读性。坐标轴精细控制:通过
scale_x_continuous()结合breaks与labels参数,自定义 X 轴刻度显示规则。图例优化处理:使用
guides(color="none")移除不必要的颜色图例,避免视觉干扰。
4.4.3 关键注意事项
移动平均计算特性:窗口大小为 N 时,计算结果前 N-1 行将生成 NA 值(需提前处理缺失值)。
日期格式规范:需兼顾显示空间与可读性,避免日期标签重叠或信息模糊。
分面尺度一致性:需校验各子图数据尺度是否具备可比性,避免因尺度差异导致分析偏差。
4.4.4 优化拓展方向
图表可读性增强:补充主标题与轴标签,明确数据含义。
多维度数据整合:考虑添加交易量数据作为副图,丰富金融分析维度。
布局灵活组合:尝试使用
cowplot或patchwork包实现图表的自定义拼接,提升可视化布局自由度。