Matplotlib日期处理以每12个月显示年刻度
在数据可视化领域,Matplotlib是非常流行的数据可视化工具之一。Matplotlib的强大之处在于它能够处理各种类型的图形。在本文中,我们将关注Matplotlib中如何处理日期并将刻度显示为每12个月的年刻度。
日期处理
在处理日期时,Matplotlib提供多个内置的工具,其中最常用的是dates
模块。 首先,我们需要导入必要的库:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
为了处理日期,我们需要使用Python标准库中的datetime
模块来创建日期对象。
date_format = '%d-%m-%Y'
dates = ['01-01-2020', '05-02-2020', '19-03-2020', '10-05-2020', '02-06-2020', '01-07-2020', '20-08-2020', '15-11-2020', '25-12-2020']
x = [datetime.strptime(d, date_format) for d in dates]
y = [1, 3, 6, 9, 8, 7, 5, 4, 2]
在这个例子中,我们创建了一个日期格式变量,并为 dates
变量提供了一组日期字符串。然后,我们使用datetime.strptime()
方法将字符串转换为Python datetime
对象,最后将它们添加到 x
轴。
刻度标签格式化
在Matplotlib中,mdates
模块包含几种日期格式化示例。以下是最常用的两种带有完整年份和简略年份的示例:
# 完整年份
date_fmt = '%Y'
# 简略年份
date_fmt_short = '%y'
创建图表
我们可以使用Matplotlib来绘制具有日期刻度的图表。我们可以使用set_major_formatter()
方法来设置日期标签的显示格式。此外,我们还可以手动设置x轴的日期间隔,以便每隔12个月显示一次年份。
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(x, y)
# 创建DateFormatter对象
date_formatter = mdates.DateFormatter(date_fmt)
# 设置x轴坐标为日期
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(date_formatter)
# 以每12个月显示年份
ax.xaxis.set_minor_locator(mdates.YearLocator(12))
plt.show()
如上所述,我们使用plt.subplots()
方法创建一个新的图形并将其存储在名为fig
和ax
的对象中。然后,我们创建一个DateFormatter
对象以设置日期格式。 使用set_major_locator()
和set_major_formatter()
方法设置主要日期刻度标签。在此例中,我们将x轴主要刻度作为每个月的刻度,然后使用mdates.YearLocator()
和set_minor_locator()
方法设置次要年份刻度。最后,我们使用plt.show()方法显示图表。
完整代码示例
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
# 日期格式
date_format = '%d-%m-%Y'
# 一些随机日期和值
dates = ['01-01-2020', '05-02-2020', '19-03-2020', '10-05-2020', '02-06-2020', '01-07-2020', '20-08-2020', '15-11-2020', '25-12-2020']
x = [datetime.strptime(d, date_format) for d in dates]
y = [1, 3, 6, 9, 8, 7, 5, 4, 2]
# 日期格式
date_fmt = '%Y'
# 创建图表
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(x, y)
# 创建DateFormatter对象
date_formatter = mdates.DateFormatter(date_fmt)
# 设置x轴坐标为日期
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(date_formatter)
# 以每12个月显示年份
ax.xaxis.set_minor_locator(mdates.YearLocator(12))
plt.show()
结论
在本文中,我们学习了如何在Matplotlib中使用dates
模块来处理日期。我们还了解了如何手动设置x轴的日期间隔,以便将刻度显示为每12个月的年刻度。希望这篇文章对于那些希望在Matplotlib中开展数据可视化项目的人们有所帮助。