第七章 时间序列可视化课堂练习
1 案例数据
1.1 all_stock_2024:工商银行、招商应用、中信证券和贵州茅台四个股票2024各天交易数据
data
为为日期变量,但该日期变量不规则(不连续),周末和公众假期没有交易数据;编码
和名称
用于识别不同股票,注意不同股票有交易数据日期不一定一致,但本例种各股票均有242个交易日数据;开盘
价到换手率
均为数值变量,开盘
价到成交量
与每股资产有关,不同股票间不可比;交易量的单位为手(百股)、成交额的单位为元,振幅等四个变量均为相对指标。
2 折线图和面积图
2.1 合并折线图
将四只股票的
涨跌幅
做作折线图,将四条折线在同一个图形输出;日期截取
2024-9-1
到2024-10-31
;添加一条纵轴为0的参考线,采用
twodash
的线型;将图标题改为“合并涨跌幅折线图”。
List of 4
$ legend.background : list()
..- attr(*, "class")= chr [1:2] "element_blank" "element"
$ legend.position : chr "inside"
$ legend.position.inside: num [1:2] 0.1 0.8
$ title : chr "合并涨跌幅折线图"
- attr(*, "class")= chr [1:2] "theme" "gg"
- attr(*, "complete")= logi FALSE
- attr(*, "validate")= logi TRUE
2.2 分面折线图
将四只股票的
收盘
价格做作折线图,将四条折线图分面输出;日期截取一整年;
并使用
ggpol::geom_tshighlight
将2024-9-1
到2024-10-31
时间段高亮显示
2.3 分面面积图
将四只股票的
成交量
价格做作面积图,将四个面积图分面输出;将成交量的单位改为万手
2.4 图形观察和代码编写的心得体会
(1) 合并涨跌幅折线图
选取了 2024年9月1日至10月31日 的股票涨跌幅数据。折线图(
geom_line
)能直观反映股票价格的 短期波动,例如:中信证券(600030)在 9月24日-27日 出现 大幅上涨(7.82%、3.6%),随后在 10月9日剧烈震荡(振幅13.77%)。贵州茅台(600519)同期表现 相对平稳,但 10月8日 出现 10%涨停(数据中涨跌幅=10
)。geom_hline(yintercept=0)
添加 零基准线,方便判断涨跌方向。
(2) 分面收盘价折线图
使用全部日期的 收盘价。分面图(
facet_wrap
)适合对比 不同股票的独立趋势,例如:工商银行(601398)股价 长期稳定(4.78~6.92元),而贵州茅台(600519)波动剧烈(1414~1777元)。scale="free"
让每个子图的Y轴刻度独立,避免低价股(如工商银行)被高价股(如茅台)压缩显示。geom_tshighlight
高亮 9-10月区间,突出该时段的市场表现(如国庆节前后行情)。
(3) 分面成交量面积图
使用全部日期的 成交量(单位转换为万手)。面积图(
geom_area
)强调 成交量的累积效应,例如:中信证券在 9月24日-26日 成交量激增(峰值2869万手),对应股价大涨,显示资金涌入。贵州茅台在 10月8日 成交量骤增(1475万手),与涨停行情匹配。ylab("成交量-万手")
明确单位,避免误解。分面后仍保留独立Y轴,确保不同量级的股票成交量可比。
3 流线图和地平线图
3.1 流线图
将四只股票的
成交额
做作流线图;将交易额的单位改为亿元
3.2 地平线图
- 采用
ggHoriPlot::geom_horizon
函数,对四只股票的成交额
做作地平线图 - 设置原点为均值
origin='mean'
,输出配色图例
3.3 图形观察和代码编写的心得体会
1. 流线图(Stream Plot)分析
- 选取了 日期、股票名称、成交额,并将成交额单位转换为 亿元(
/1e8
)。geom_stream()
绘制 流线图,展示不同股票成交额的 相对占比和趋势变化。bw = 0.3
控制平滑度,值越小曲线越尖锐,反之越平滑。适用观察市场资金流动,比如:中信证券(600030) 在 9月24日-27日 成交额激增(对应股价大涨),流线宽度明显扩张。贵州茅台(600519) 成交额整体平稳,但 10月8日 出现峰值(涨停日)。
2. 地平线图(Horizon Plot)分析
同样使用 成交额,但未做单位转换(因
geom_horizon
自动分层)。geom_horizon()
将数据 按均值(origin=‘mean’)分层,每层代表一定数值范围(horizonscale=10
)。facet_grid(名称~.)
纵向分面,适合对比多股票的 极端波动。配色:scale_fill_hcl(palette='RdYlBu')
使用红-黄-蓝渐变,暖色(红)表示 高于均值,冷色(蓝)表示 低于均值。适用识别 成交额异常波动,例如:工商银行(601398) 在 8月30日 出现深红色带,对应成交额骤增(股价跳空下跌)。招商银行(600036) 在 5月16日 的亮黄色带,反映短期资金涌入。
4 不规则时间序列图
4.1 数据准备
通过
zoo::rollmean
时间收盘价的5天、10天和20天的移动平均将日期变量转化为
id
变量
4.2 平滑曲线图
将四只股票收盘价和3种移动平均的折线图分面输出;
横轴的每隔30天一个刻度,只显示月/日;
4.3 K线图
选择工商银行数据作出,2024年的K线图
scale_x_continuous
将横轴坐标刻度转化回日期型
4.4 图形观察和代码编写的心得体会
(1) 平滑曲线图
gather(收盘:ma20, key=指标, value=指标值)
将 收盘价、MA5、MA10、MA20 转换为长格式,便于分面绘制。date_index
是日期序号(1~242),用于简化X轴刻度。图形特点:分面展示(
facet_wrap(~名称)
)对比不同股票的 收盘价与均线趋势。X轴优化:scale_x_continuous
将序号转换为日期标签(如"01-02"
),避免重叠。隐藏图例:guides(color="none")
因分面后颜色意义明确(如蓝线=收盘价)。快速对比多只股票的 技术指标一致性(如均线是否支撑股价)。
(2) K线图
仅分析 工商银行(601398),包含开盘、收盘、最高、最低价及均线(MA5/10/20)。图形组成:蜡烛实体:
geom_rect
用红(涨)/绿(跌)色矩形表示 开盘-收盘价区间。上下影线:geom_segment
绘制 最高-最低价 的垂直线。均线叠加:geom_line
分别绘制MA5(蓝)、MA10(橙)、MA20(紫)。X轴标签:每20天显示一个日期(
seq(1, 242, by=20)
),避免拥挤。均线图例置于顶部(legend.position="top"
),隐藏蜡烛图例(guides(fill="none")
)。