matplotlib DateFormatter将1970作为年份,而不是数据集中的原始年份

eivnm1vs  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(126)

我正在尝试绘制时间序列数据。但是x轴的刻度并没有按照它应该的方式来。我想在x轴上标出月份和年份。这是我的代码

from matplotlib.dates import DateFormatter
import matplotlib.dates as mdates
fig,ax = plt.subplots()
df_month.loc['2017', "Volume"].plot.bar(color='blue', ax=ax)
ax.set_ylabel("Volume")
ax.set_title("Volume")
date_form = DateFormatter("%y-%m")
ax.xaxis.set_major_formatter(date_form)

plt.xticks(rotation=45)
plt.show()

字符串
输出看起来像这样

我做错了什么?请帮帮我
我的数据集看起来像这样:


以下是df_month数据:

iovurdzv

iovurdzv1#

下面给出了正确的x轴标签。
导入模块

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

字符串
示例数据

df_month = pd.DataFrame({'Date':['2006-01-03', '2006-02-04', '2006-02-08'], 'Volume':[24232729, 20553479, 20500000]}) # '2006-01-03', '2006-01-04'

df_month['Date'] = pd.to_datetime(df_month['Date'])


绘图

fig,ax = plt.subplots()
ax.set_ylabel("Volume")
ax.set_title("Volume")

ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
ax.bar(df_month['Date'], df_month['Volume'])

plt.xticks(df_month['Date'], rotation=90)
plt.show()

1yjd4xko

1yjd4xko2#

我也有同样的问题。解决方案真的包含在@Ruthger Righart的答案中,我一开始很难理解,但关键的变化是使用matplotlib pyplot绘图,而不是here和@特伦顿McKinney评论中提到的link中的pandas绘图。首先将数据过滤到你想要绘制的年份,然后像@Ruthger Righart那样调用图:

import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.bar(df_month['Date'], df_month['Volume'])

字符串
像最初那样添加标签。

相关问题