Matplotlib格式化X轴显示1970年1月1日

sisdog

Matplotlib的新手,尝试在x轴上设置日期格式。如果我只使用plt.xticks,则日期正确。但是,如果我尝试使用ax.xaxis.set_major_formatter格式化值,则会将我的轴值更改为基于Jan-1-1970的值。我确定这是新手入门,因此值得一看。(顺便说一句,在JupyterLabs笔记本中运行)。

import pandas as pd
from datetime import date
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
%matplotlib inline

# data to plot
#df_plot = df_dts[df_dts.dt>"8/17/2020"]
df_plot = pd.DataFrame({
    'dt': [date(2020,8,19), date(2020,8,20), date(2020,8,21), date(2020,8,22)],
    'open_cnt': [2,15,2,7],
    'close_cnt': [0,2,11,0]
})

# create plot
fig, ax = plt.subplots()
fig.set_size_inches(10, 5, forward=True)
index = np.arange(len(df_plot))
bar_width = 0.35
opacity = 0.8

rects1 = plt.bar(index, df_plot.open_cnt, bar_width, alpha=opacity, color='orange', label='Open')
rects2 = plt.bar(index + bar_width, df_plot.close_cnt, bar_width, alpha=opacity, color='g', label='Close')

plt.xlabel('Date')
plt.ylabel('Workitems')
plt.title('Open & Close Rates')
plt.xticks(index + bar_width/2, df_plot.dt)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b-%d-%y'))
plt.show()

在此处输入图片说明 在此处输入图片说明

Valdi_Bo

不用弄乱格式化程序而是DataFrame中的索引设置为日期的正确文本表示形式,然后在此对象上调用plot.bar

fig, ax = plt.subplots(figsize=(10,5))
ax = df_plot.set_index(df_plot.dt.map(lambda s: s.strftime('%b-%d-%y')))\
    .plot.bar(ax=ax, legend=False, title='Open & Close Rates', rot=0,
    color=['orange', 'green'])
ax.set_xlabel('Date')
ax.set_ylabel('Workitems');

对于您的数据,我得到以下图片:

在此处输入图片说明

如您所见,我的代码比您的代码更简洁。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

日期始终显示1970年1月1日

Matplot lib 从 1970 年 1 月开始在 X 轴上生成日期

Buddypress –评论日期显示在“ 1970年1月1日回复”,现在

如何格式化DatePicker以显示日期格式为日/月/年?

为什么1970年1月1日是“时代”?

1970年1月1日之前的日期

如何确定1970年1月1日返回的日期?

javascript Regex日期1970年1月1日之前

在Excel 2003中将日期时间格式化为2015年1月1日

自1970年1月1日以来的年,月,周,天,小时

雨果(Hugo)将显示正确格式的日期显示为“ 0001年1月1日”

使用日期格式Matplotlib格式化X轴

如何使用Javascript以这种格式显示日期2012年1月1日

如何从1970年1月1日在Lua以来经过的秒数中获取日期(月,日,年)?

Java时间:从1970年1月1日凌晨1点开始?

如何转换2014年1月1日格式的GetDate()?

SQL中2012年1月1日的日期格式

如何获得自1970年1月1日以来的Python日期时间对象的秒数?

如何将自1970年1月1日以来的秒数转换为日期时间值?

为什么要从1970年1月1日开始计算日期?

Java.util.Calendar-自1970年1月1日以来的毫秒数

自1970年1月1日起,C ++将Windows时间设置为ms

在R中转换1970年1月1日之前的日期

减少自1970年1月1日午夜以来的毫秒数

2021 年 9 月 1 日的 Angular 日期格式

Matplotlib pyplot轴格式化程序

Python Matplotlib科学轴格式化

我的Highchart每次都退回到1970年1月18日。为什么?

将 JavaScript 日期格式化为“月日、年”格式