【问题标题】:Formatting y axis datetime.time values as "%H:%M:%S.%f"将 y 轴 datetime.time 值格式化为“%H:%M:%S.%f”
【发布时间】:2018-11-28 07:55:32
【问题描述】:

我正在尝试将 Y 轴 datetime.time 值格式化为 %H:%M:%S.%f

这段代码:

fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 5), dpi=150)
axes.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

#axes.yaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S.%f'))

axes.plot_date(test_df["date"],test_df["time"],ydate=True)

plt.gcf().autofmt_xdate()

给予

当我取消注释 axes.yaxis.set_major_formatter 时,图表在 Y 轴上显示零:

知道有什么问题吗?

【问题讨论】:

  • 你的代码适合我
  • 所以您确实看到了除零以外的其他时间?
  • 是的,正如您所料。如果你愿意,我可以发布 df、代码和绘图
  • 您使用的是哪个版本?
  • 好的,我可以测试一下

标签: python datetime matplotlib


【解决方案1】:

根据要求,我发布了我在其输出中使用的 df 和代码。

df = pd.DataFrame({'time': ['7:30', '8:30', '7:30','10:30','11:30'], 'date': ['2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04','2018-10-05']})

import matplotlib.dates as mdates
df['time'] = pd.to_datetime(df['time'], format='%H:%M') 
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
fig, axes = plt.subplots(nrows=1, ncols=1)
axes.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
axes.yaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
axes.plot_date(df["date"],df["time"],ydate=True)
plt.gcf().autofmt_xdate()
plt.show()

【讨论】:

  • Tx,尝试了你的代码,它给出了一个错误:ValueError: DateFormatter found a value of x=0, 这是一个非法的日期。这通常是因为您没有通知轴它正在绘制日期,例如,使用 ax.xaxis_date()
  • 如果在df后面加:df['time'] = pd.to_datetime(df['time'], format='%H:%M')df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')?
  • 可能是当时的版本
  • Tx 为您提供帮助,我将明确将 datetime.time 转换为时间戳以使其正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
相关资源
最近更新 更多