第七章 时间序列可视化课堂练习
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
包实现图表的自定义拼接,提升可视化布局自由度。