sis*_*dog 3 matplotlib python-3.x
Matplotlib 的新手,尝试在 x 轴上格式化日期。如果我只使用 plt.xticks,日期是正确的。但是,如果我尝试使用 ax.xaxis.set_major_formatter 格式化这些值,它会将我的轴值更改为基于 1970 年 1 月 1 日的值。我确定这是新手的东西,谢谢引导。(顺便说一句,在 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()
Run Code Online (Sandbox Code Playgroud)
不要弄乱formatter,而是将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');
Run Code Online (Sandbox Code Playgroud)
对于您的数据,我得到了以下图片:
如您所见,我的代码比您的更简洁。
归档时间: |
|
查看次数: |
1876 次 |
最近记录: |