用 timedelta 系列绘制直方图
ploting histogram with timedelta series
我有一些系列数据,是timedelta数据类型。我想将这些 timedelta 绘制成条形图,其中 y 轴应该只以小时而不是其他格式标记。以前,当我尝试在 matplotlib 中绘制线图时,它显示了一些无法理解的数字。以下是我的pandas的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()
我有一些系列数据,是timedelta数据类型。我想将这些 timedelta 绘制成条形图,其中 y 轴应该只以小时而不是其他格式标记。以前,当我尝试在 matplotlib 中绘制线图时,它显示了一些无法理解的数字。以下是我的pandas的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()