第七章 时间序列可视化课堂练习
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 分面面积图
将四只股票的
收盘
价格做作面积图,将四个面积图分面输出;将成交量的单位改为万手
<ggproto object: Class FacetWrap, Facet, gg>
compute_layout: function
draw_back: function
draw_front: function
draw_labels: function
draw_panels: function
finish_data: function
init_scales: function
map_data: function
params: list
setup_data: function
setup_params: function
shrink: TRUE
train_scales: function
vars: function
super: <ggproto object: Class FacetWrap, Facet, gg>
2.4 图形观察和代码编写的心得体会
- 合并折线图例内嵌(
legend.position=c(0.1,0.8)
)节省空间,但需避免遮挡数据。10月中旬所有股票同步下跌,可能受大盘影响。facet_wrap(~名称, scale="free")
实现多图分面且y轴独立缩放,避免量纲差异问题。贵州茅台收益最高(1400~1700),但波动剧烈;银行股收益平稳。geom_area()
展示成交量累积效果,成交量/10000
转换单位(万手)提升可读性。贵州茅台成交量最小但峰值明显(可能对应财报发布);银行股成交量持续高位。
3 流线图和地平线图
3.1 流线图
将四只股票的成交额 做作流线图,将四个面积图分面输出;
将交易额的单位改为亿元
3.2 地平线图
- 采用
ggHoriPlot::geom_horizon
函数,对四只股票的交易额
做作地平线图 - 设置原点为均值
origin='mean'
,输出配色图例
3.3 图形观察和代码编写的心得体会
geom_horizon()
将数据分层(horizonscale=10
),适合展示极端波动。贵州茅台成交额波动最大(深色区域多),银行股较平稳。geom_stream()
生成流动效果,bw=0.3
控制平滑度,单位转换(亿元)简化标签。贵州茅台成交额波动显著,四季度资金流入明显。
4 不规则时间序列图
4.1 数据准备
通过
zoo::rollmean
时间收盘价的5天、10天和20天的移动平均将日期变量转化为
id
变量
4.2 平滑曲线图
将四只股票收盘价和3种移动平均的折线图分面输出;
横轴的每隔30天一个刻度,只显示月/日;
4.3 K线图
选择工商银行数据作出,2024年的K线图
scale_x_continuous
将横轴坐标刻度转化回日期型
4.4 图形观察和代码编写的心得体会
method="loess"
:适合局部加权回归,span
参数控制平滑度(越小越敏感)。贵州茅台平滑曲线呈现“U型”复苏(年中低谷,年末反弹),反映消费板块周期。银行股(工行、招行)趋势平缓,符合防御性资产特征。geom_segment()
画影线,geom_rect()
画实体,fill
区分涨跌(红涨绿跌)。年末实体变短,波动减小,均线粘合,可能进入盘整阶段。