Matplotlib – 日期操作以每 12 个月显示年份刻度

matplotlibpythondata visualization

要进行 matplotlib 日期操作,以便每 12 个月显示年份刻度,我们可以采取以下步骤 −

  • 设置图形大小并调整子图之间和周围的填充。
  • 使用 Pandas、Numpy 和 matplotlib 日期创建 d、y、s、years、months、monthsFmtyearsFmt
  • 在 DateFormatter 中使用 "%B" 显示完整的月份名称。
  • 在 DateFormatter 中使用 "%Y" 显示年份。
  • 创建新图形或激活现有图形。
  • 添加 'ax"作为子图布置的一部分添加到图中。
  • 使用 plot() 方法绘制"dts"和"s"数据点。
  • 设置次要或主要轴定位器和格式化程序。将 minor_locator 设置为 months,以便每 12 个月显示一次年份刻度。
  • 要显示该图,请使用 show() 方法。

示例

import numpy as np
from matplotlib import pyplot as plt, dates as mdates
import pandas as pd

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

d = pd.date_range("2020-01-01", "2021-06-01", freq="7D")
y = np.cumsum(np.random.normal(size=len(d)))
s = pd.Series(y, index=d)
years = mdates.YearLocator()
months = mdates.MonthLocator()
monthsFmt = mdates.DateFormatter('%B')
yearsFmt = mdates.DateFormatter('\n%Y')

dts = s.index.to_pydatetime()
fig = plt.figure()

ax = fig.add_subplot(111)
ax.plot(dts, s)
ax.xaxis.set_minor_locator(months)
ax.xaxis.set_minor_formatter(monthsFmt)
plt.setp(ax.xaxis.get_minorticklabels(), rotation=90)

ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(yearsFmt)

plt.show()

输出

它将产生以下输出


相关文章