如何解决用 timedelta 系列绘制直方图
我有一些数据系列,这是一种 timedelta 数据类型。我想将这些 timedelta 绘制成条形图,其中 y 轴应仅以小时为单位而不是其他格式进行标记。以前,当我在 matplotlib 中尝试绘制线图时,它显示了一些无法理解的数字。以下是我的 timedelta 系列熊猫的示例:
date
2020-04-11 0 days 02:00:00
2020-04-12 0 days 03:00:00
2020-04-13 0 days 02:00:00
2020-04-14 0 days 03:00:00
2020-04-15 0 days 01:00:00
2020-04-16 0 days 03:00:00
Freq: D,dtype: timedelta64[ns]
当我试图在 matplotlib 中绘制它时,它导致一个带有 y 轴值的图对我来说看起来很奇怪。
请帮我算出图表,其中 y 轴刻度标签应采用类似 01:00
、02:00
的格式。
急切地等待一些帮助。
解决方法
一种可能的方法是在几秒钟内转换增量并定义一个 FuncFormatter
。
这是我的测试系列和我的最终情节:
2020-04-11 02:00:00
2020-04-12 03:00:00
2020-04-13 05:00:00
dtype: timedelta64[ns]
def delta(x,pos):
out = str(datetime.timedelta(seconds=x) )
return out
fig = plt.figure()
ax = fig.gca()
form = matplotlib.ticker.FuncFormatter(delta)
ax.yaxis.set_major_formatter(form)
ax.plot(s.index,s/np.timedelta64(1,'s'))
ax.set_yticks(s/np.timedelta64(1,'s'))
ax.set_xticks(s.index)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。