本文主要是介绍python --生成时间序列,作为横轴的标签。时间跨越2008-2022年,生成每年的6-10月的第一天作为时间序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
python 生成制定的时间序列作为绘图时x轴的标签
问题需求
- 在绘图时,需要对于x轴的标签进行专门的设置,整体时间跨越2008年-2022年,将每年的6-10月的第一天生成一条时间序列,绘制成图。
解决思路
对于时间序列的生成,使用datetime和pandas
这两个包:
- datetime中文介绍
- pandas date_range 官方介绍
具体思路如下:
- 1、使用datetime模块创建起始年份和结束年份。
- 2、然后,使用pandas的date_range函数生成从每年的6月1日到10月1日的时间序列。
- 3、接着,我们筛选出每年的6-10月1日,并将时间序列格式化为字符串存储在标签列表中。
- 4、最后,我们使用matplotlib的xticks函数将标签列表作为x轴标签,并使用rotation参数将标签旋转90度以避免重叠
代码实现
import pandas as pd
import datetime# 创建起始年份和结束年份
start_year = 2008
end_year = 2022# 创建每年6-10月1日的时间序列
dates = pd.date_range(start=f'{start_year}-06-01', end=f'{end_year}-10-01', freq='MS')# 筛选出每年的6-10月1日
filtered_dates = [date for date in dates if date.month in [6, 7, 8, 9, 10]]# 将时间序列格式化为字符串并存储在标签列表中
labels = [d.strftime('%Y-%m-%d') for d in filtered_dates]# 绘制图形并使用标签作为x轴
import matplotlib.pyplot as pltx = range(len(labels))
y = [i**2 for i in x]plt.plot(x, y)
plt.xticks(x, labels, rotation=90)plt.show()
结果展示
- 间隔太密了,可以做适当修改
plt.xticks(x[::10], labels[::10], rotation=90)
欢迎评论或者加我交流,分享更简单的绘制方法~
这篇关于python --生成时间序列,作为横轴的标签。时间跨越2008-2022年,生成每年的6-10月的第一天作为时间序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!