在我的绘图上格式化日期时间轴(Python)

在我的绘图上格式化日期时间轴(Python),python,datetime,matplotlib,plot,Python,Datetime,Matplotlib,Plot,我正在尝试将我的日期时间格式更改为dd-mm或mm-dd,但我不确定如何执行。我看了其他堆栈溢出问题和答案,但我想我的情节可能与他们有点不同,因为我在计算每一天的总和 data = {'date': ['2020-09-01', '2020-09-02', '2020-09-03', '2020-09-04', '2020-09-01'], 'newcases': [1, 2, 4, 7, 10]} df = pd.DataFrame(data, columns = ['date','

我正在尝试将我的日期时间格式更改为dd-mm或mm-dd,但我不确定如何执行。我看了其他堆栈溢出问题和答案,但我想我的情节可能与他们有点不同,因为我在计算每一天的总和

data = {'date': ['2020-09-01', '2020-09-02', '2020-09-03', '2020-09-04', '2020-09-01'],
    'newcases': [1, 2, 4, 7, 10]}

df = pd.DataFrame(data, columns = ['date','newcases'])

df['date'] = pd.to_datetime(df['date']) #converted to datetime

import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m'))
df.groupby('date').newcases.sum().plot(kind = 'bar')
这是我尝试过的,但我无法将x-ticks格式化为正确的格式(dd-mm)。它仍然是这样的:


熊猫在打印时创建新图形/轴(除非向其传递轴对象)。因此,您需要先绘图,然后更改刚刚创建的绘图的轴格式化程序(
gca
=获取当前轴),即只需更改最后两行代码的顺序:

df.groupby('date').newcases.sum().plot(kind = 'bar')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m'))

您尝试了什么?你能提供一份工作吗?(理想情况下是文本/代码,而不是屏幕截图)我刚刚将原始问题更改为一个示例数据框。如果您能提供任何帮助,我们将不胜感激!我正在尝试学习Python,并使用了一个样本COVID-19数据集进行练习:)嗨,我以前尝试过这个,但我遇到了一个错误。错误是“DateFormatter发现一个x=0的值,这是一个非法的日期;这通常是因为您没有通知axis它正在打印日期,例如,使用ax.xaxis_date()'您使用的是什么版本?您的示例与pandas 1.1.3和matplotlib 3.3.0的更改顺序完美配合,请参见答案中的附图。对于pandas的旧版本,您可以使用
df.groupby(df['date'].dt.strftime('%d-%m'))。newcases.sum().plot(kind='bar')
Ah非常感谢您,我刚刚更新了我的Anaconda Navigator,现在可以使用了。我没有意识到这可能是因为我使用的是一个更老的版本的蟒蛇!