第七章 时间序列可视化课堂练习
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时间段高亮显示
mapping: xmin = ~as.Date("01/09/2024", format = "%d/%m/%Y"), xmax = ~as.Date("31/10/2024", format = "%d/%m/%Y")
geom_rect: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
2.3 面积图
将四只股票的
收盘价格做作面积图,将四个面积图分面输出;将成交量的单位改为万手
2.4 图形观察和代码编写的心得体会
合并折线图
2.4.1 图形观察:
数据展示:折线图展示了四只股票(工商银行、贵州茅台、招商银行、中信证券)在9月1日至11月1日期间的涨跌幅变化趋势。
涨跌幅范围:纵轴范围为-5%到10%,说明股票的波动幅度较大,贵州茅台和招商银行的波动尤为明显。
趋势特征:
贵州茅台和招商银行的涨跌幅波动剧烈,可能存在短期市场情绪或事件驱动的影响。
工商银行和中信证券的走势相对平缓,体现出蓝筹股或金融股的稳定性。
关键时间点:10月15日前后,部分股票出现显著涨跌(如贵州茅台可能触底反弹),需结合当时市场新闻分析原因。
2.4.2 代码编写心得体会(假设使用Python的Matplotlib):
数据准备:
确保日期列转换为
datetime格式,方便横轴显示。使用
pandas读取数据,并按日期排序。
可视化技巧:
通过
plt.plot()绘制多条折线,并设置不同颜色和标签区分股票。添加图例(
plt.legend())和标题,提高可读性。调整横轴日期显示密度,避免重叠(如
plt.xticks(rotation=45))。
优化建议:
若数据点密集,可添加标记点(
marker='o')突出关键日期。使用
seaborn库可进一步美化样式(如网格线、背景色)。
分面折线图
2.4.3 图形观察
趋势识别:通过观察图形,可以快速识别数据的趋势,如上升、下降或周期性波动。例如,从你提供的图表中,可以观察到不同股票或指数在一年中的表现趋势。
异常值检测:图形可以帮助识别数据中的异常值或异常波动,这对于进一步分析和决策至关重要。
比较分析:通过将多个图形并排放置,可以直观地比较不同数据集之间的差异和相似性。
数据分布:图形可以展示数据的分布情况,如集中趋势、离散程度等,这对于理解数据的整体特征非常有帮助。
直观理解:图形提供了一种直观的方式来理解复杂的数据关系,使得非专业人士也能够快速把握数据的要点。
2.4.4 代码编写
精确控制:通过编写代码,可以精确控制图形的各个方面,包括颜色、标签、图例等,从而制作出符合特定需求的图形。
自动化处理:代码可以自动化处理大量数据,生成图形,这对于处理大数据集尤其有用。
可重复性:代码的可重复性意味着你可以轻松地重新生成图形,这对于验证结果和分享分析过程非常重要。
灵活性:代码允许你灵活地调整分析方法和图形类型,以适应不同的数据和分析需求。
学习曲线:编写代码可能需要一定的学习曲线,但一旦掌握,它将极大地提高你的数据分析能力。
面积图
2.4.5 图形观察
数据趋势:图形可以直观地展示数据随时间的变化趋势。例如,从你提供的图表中,我们可以观察到工商银行、贵州茅台、招商银行和中信证券的成交量随时间的变化。
异常检测:图形可以帮助我们快速识别数据中的异常点或异常波动,这对于发现潜在的问题或机会至关重要。
模式识别:通过图形,我们可以识别数据中的模式,如周期性波动、季节性变化等。
比较分析:将多个图形并排放置,可以直观地比较不同数据集之间的差异和相似性,这有助于我们理解不同变量之间的关系。
数据分布:图形可以展示数据的分布情况,如集中趋势、离散程度等,这对于理解数据的整体特征非常有帮助。
2.4.6 代码编写
精确控制:通过编写代码,可以精确控制图形的各个方面,包括颜色、标签、图例等,从而制作出符合特定需求的图形。
自动化处理:代码可以自动化处理大量数据,生成图形,这对于处理大数据集尤其有用。
可重复性:代码的可重复性意味着你可以轻松地重新生成图形,这对于验证结果和分享分析过程非常重要。
灵活性:代码允许你灵活地调整分析方法和图形类型,以适应不同的数据和分析需求。
学习曲线:编写代码可能需要一定的学习曲线,但一旦掌握,它将极大地提高你的数据分析能力。
3 流线图和地平线图
3.1 流线图
将四只股票的
交易额做作流线图,将四个面积图分面输出;将交易额的单位改为亿元
3.2 地平线图
- 采用
ggHoriPlot::geom_horizon函数,对四只股票的交易额做作地平线图 - 设置原点为均值
origin='mean',输出配色图例
3.3 图形观察和代码编写的心得体会
流线图
3.3.1 图形观察:
数据展示:流线图展示了四家上市公司(工商银行、招商银行、贵州茅台、中信证券)在2024年1月至2025年1月期间的成交额变化趋势。
时间跨度:横轴覆盖了2024年1月、4月、7月、10月和2025年1月五个关键时间节点,纵轴为成交额(亿元)。
趋势特征:
贵州茅台:成交额波动可能较大,尤其在2024年7月至10月期间可能出现峰值,反映其高关注度或市场事件影响。
银行与券商股(工商银行、招商银行、中信证券):成交额相对平稳,但招商银行可能在2024年4月或2025年1月有显著变化,需结合金融政策分析。
异常点:若某个月份出现成交额骤升或骤降(如2024年10月),需检查是否为财报发布、政策调整或市场情绪波动所致。
3.3.2 代码编写心得体会(假设使用Python的Matplotlib或Seaborn):
数据准备:
确保日期列转换为
datetime格式,并按时间排序。若数据为长格式(每行包含日期、公司名称、成交额),使用
pivot或groupby整理为宽格式(公司为列,日期为索引)。
可视化技巧:
流线图绘制:使用
plt.plot()或seaborn.lineplot(),设置不同颜色和线型区分公司。标签优化:旋转横轴日期标签(
plt.xticks(rotation=45)),避免重叠。辅助元素:添加标题、轴标签、图例和网格线,提升可读性。
交互性扩展(可选):
- 使用
plotly库生成动态图表,支持悬停查看具体数值。
- 使用
地平线图
3.3.3 图形观察
直观理解:图形提供了一种直观的方式来理解数据。通过观察图表,我们可以快速把握数据的分布、趋势和异常。
模式识别:图形可以帮助我们识别数据中的模式,比如周期性波动、季节性变化等。
比较分析:通过并排或叠加不同的图形,我们可以比较不同数据集或不同时间段的数据变化。
异常检测:图形可以揭示数据中的异常点,这些异常可能是由于错误、特殊情况或重要事件引起的。
故事讲述:好的图形可以像故事一样,引导观众理解数据背后的含义。
3.3.4 代码编写
精确控制:通过代码,我们可以精确控制图形的每一个细节,包括颜色、标签、图例等,以确保图形准确传达我们的分析结果。
自动化:代码可以自动化重复性的任务,比如数据清洗、图形生成等,这大大提高了工作效率。
可重复性:代码的可重复性确保了分析过程的一致性,这对于科学验证和结果的可靠性至关重要。
灵活性:代码允许我们灵活地调整分析方法,尝试不同的图形类型和参数,以找到最佳的可视化方式。
学习曲线:虽然编写代码可能需要一定的学习曲线,但掌握后可以极大地扩展我们的分析能力。
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 图形观察
趋势识别:图形可以直观地展示数据随时间的变化趋势,帮助我们快速识别上升、下降或波动的趋势。
模式识别:通过图形,我们可以识别数据中的模式,如周期性波动、季节性变化等,这对于理解数据的内在规律非常有帮助。
异常检测:图形可以帮助我们快速识别数据中的异常点或异常波动,这对于发现潜在的问题或机会至关重要。
比较分析:通过将多个图形并排放置,可以直观地比较不同数据集之间的差异和相似性,这有助于我们理解不同变量之间的关系。
数据分布:图形可以展示数据的分布情况,如集中趋势、离散程度等,这对于理解数据的整体特征非常有帮助。
4.4.2 代码编写
精确控制:通过编写代码,可以精确控制图形的各个方面,包括颜色、标签、图例等,从而制作出符合特定需求的图形。
自动化处理:代码可以自动化处理大量数据,生成图形,这对于处理大数据集尤其有用。
可重复性:代码的可重复性意味着你可以轻松地重新生成图形,这对于验证结果和分享分析过程非常重要。
灵活性:代码允许你灵活地调整分析方法和图形类型,以适应不同的数据和分析需求。
学习曲线:编写代码可能需要一定的学习曲线,但一旦掌握,它将极大地提高你的数据分析能力。
k线图
4.4.3 图形观察
直观性:图形提供了数据的直观表示,使得非专业人士也能快速理解数据的基本趋势和模式。
模式识别:通过图形可以更容易地识别数据中的模式,如趋势、周期性、季节性变化等。
异常检测:图形可以帮助快速发现数据中的异常值或异常波动,这对于识别错误或重要事件至关重要。
决策支持:图形可以作为决策支持工具,帮助分析人员和决策者理解数据背后的故事。
沟通工具:图形是向他人传达分析结果的有效方式,尤其是在需要快速传达信息的场合。
4.4.4 代码编写
精确控制:通过代码,可以精确控制图形的生成过程,包括数据筛选、处理和可视化的每一个细节。
自动化:代码可以自动化重复性任务,如数据清洗、分析和图形生成,提高工作效率。
可重复性:代码的可重复性确保了分析过程的一致性,这对于科学验证和结果的可靠性至关重要。
灵活性:代码允许灵活地调整分析方法和图形类型,以适应不同的数据和分析需求。
学习曲线:虽然编写代码可能需要一定的学习曲线,但掌握后可以极大地扩展分析能力,处理更复杂的数据分析任务。