如何像熊猫图一样格式化 matplotlib 图的时间序列轴

问题描述 投票:0回答:1

我用

pd.Series([1]*month_limits.size, month_limits).plot(ax=ax)

创建了下图 如何仅使用 matplotlib 重新创建相同的 x 刻度标签?我的意思是年份和月份不会相互压倒

我得到的最好的是同时拥有年和月,但年压倒了月

import datetime

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

month_limits = pd.date_range('2021-08', '2023-01', freq="1m",
                             normalize=True) + datetime.timedelta(days=1)
plt.plot(month_limits, [1]*month_limits.size)

l1 = mdates.YearLocator()
l2 = mdates.MonthLocator(interval=1)
ax.xaxis.set_major_locator(l1)
ax.xaxis.set_minor_locator(l2)
ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(l1))
ax.xaxis.set_minor_formatter(mdates.ConciseDateFormatter(l2))

python matplotlib time-series axis xticks
1个回答
0
投票
  • 使用
    set_minor_locator
    set_minor_formatter
    代表月份
    '%b'
  • 使用
    set_major_locator
    set_major_formatter
    代表月份和年份
    '%b\n%Y'
    • mdates.YearLocator(month=1)
      其中
      month
      是显示年份的月份。
month_limits = pd.date_range('2021-08', '2023-01', freq="1m", normalize=True) +  pd.Timedelta(days=1)

fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(month_limits, [1]*month_limits.size)

# set locators
ax.xaxis.set_minor_locator(mdates.MonthLocator(interval=2))
ax.xaxis.set_major_locator(mdates.YearLocator(month=1))
# set formatters
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
ax.xaxis.set_minor_formatter(mdates.DateFormatter('%b'))

© www.soinside.com 2019 - 2024. All rights reserved.