在Matplolib的条形图中使用时间间隔和numpy datetime64类型

时间:2018-10-10 14:56:08

标签: python numpy matplotlib

我正在尝试绘制水平条形图,其中条形图表示随后的时间间隔。到目前为止,这是我的方法:

import matplotlib.pyplot as plt
import numpy as np

date1 = np.datetime64('2014-12-31')
date2 = np.datetime64('2014-10-30')

fig = plt.figure( figsize=(12,8) )
ax1 = fig.add_subplot( 111 )

# make horizontal bar plot
ax1.barh( 1., width=(date1-date2), height=.3, left=date1, align='center' )

plt.show()

Matplotlib不喜欢这样。这是我收到的错误消息:

TypeError: ufunc add cannot use operands with types dtype('float64') and dtype('<m8[D]')

像matplotlib这样的声音对于时间间隔被用作条的宽度感到不满意。有什么提示让Matplotlib再次开心吗?

我正在使用numpy 1.15.1matplotlib 2.2.3

1 个答案:

答案 0 :(得分:0)

您是否正在寻找类似的东西?不太清楚您希望如何达到特定的时间戳记点。

width = (date1-date2) / np.timedelta64(1, 'D')
ax1.barh(1., width=width, align='center')

ax1.set_xticklabels([date2 + np.timedelta64(x, 'D') for x in range(1, int(width)+1)])

plt.show()