简介
在本实验中,你将学习如何在 Matplotlib 中使用循环规则来设置日期刻度。iCalender RFC_ 规定了定义日期序列的循环规则(rrules)。你可以在 Matplotlib 中使用 rrules 来设置日期刻度。本示例在每隔 5 年的复活节设置自定义日期刻度。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入必要的库
首先,你需要导入必要的库,包括 Matplotlib、NumPy 和 datetime。
import datetime
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import (YEARLY, DateFormatter, RRuleLocator, drange,
rrulewrapper)
设置随机种子
在本示例中你将生成随机数据,因此需要设置随机种子以确保可重复性。
np.random.seed(19680801)
设置循环规则
你将在每隔 5 年的复活节设置自定义日期刻度。为此,你需要使用 rrulewrapper 函数设置循环规则。
rule = rrulewrapper(YEARLY, byeaster=1, interval=5)
设置刻度定位器和格式化器
你将使用 RRuleLocator 函数,根据上一步设置的循环规则来设置刻度定位器。你还将使用 DateFormatter 函数来设置刻度格式化器。
loc = RRuleLocator(rule)
formatter = DateFormatter('%m/%d/%y')
设置日期并生成随机数据
你需要设置开始日期、结束日期以及时间间隔(delta),时间间隔表示每个日期之间的差值。你还需要为该示例生成随机数据。
date1 = datetime.date(1952, 1, 1)
date2 = datetime.date(2004, 4, 12)
delta = datetime.timedelta(days=100)
dates = drange(date1, date2, delta)
s = np.random.rand(len(dates))
绘制数据并设置 x 轴刻度
最后,你可以使用 plot 函数绘制数据,并使用之前设置的刻度定位器和格式化器函数来设置 x 轴刻度。
fig, ax = plt.subplots()
plt.plot(dates, s, 'o')
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_tick_params(rotation=30, labelsize=10)
plt.show()
总结
在本实验中,你学习了如何在 Matplotlib 中使用循环规则在图表上放置自定义日期刻度。你首先使用 rrulewrapper 函数设置循环规则,然后使用 RRuleLocator 和 DateFormatter 函数设置刻度定位器和格式化器。最后,你绘制了数据,并使用刻度定位器和格式化器函数设置了 x 轴刻度。