pandas set_major_formatter将x轴原点重置为1970-01-01

qf9go6mv  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(114)

下面的代码生成了一个带有正确标记的x轴的图。但是我不需要完整的YYYY-MM-DD HH:MM:SS日期格式。没问题,经过大量的谷歌搜索,终于找到了定位器/格式化程序实用程序。但是如果我取消注解最后一行set_major_formatter,不做其他更改,它将按照请求格式化日期--但是现在x轴从历元(1970-01-01)开始。

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

dates = pd.date_range(start="2021-01-01", end="2022-12-01")
data = [d.day for d in dates]
df = pd.DataFrame(index=dates, columns=[ "Data" ], data=data)
df.plot(kind="bar")
ax = plt.gca()
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 4, 7, 10)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())
date_form = DateFormatter("%Y-%m")
# ax.xaxis.set_major_formatter(date_form)
anauzrmj

anauzrmj1#

为什么不简单地使用pandas.DatetimeIndex.strftime来代替matplotlib.dates.DateFormatter呢?
为此,您需要替换以下内容:

df = pd.DataFrame(index=dates, columns=["Data"], data=data)

通过以下方式:

df = pd.DataFrame(index=dates.strftime("%Y-%m"), columns=["Data"], data=data)

相关问题