Matplotlib / Pandas散点图在日期'deltas'上失败

时间:2016-04-21 03:43:46

标签: pandas matplotlib

我试图查看与特定事件日期以来时间差异相关的数据。

我从一系列日期中减去事件的日期。

当尝试使用'scatter'绘制它时,它会因此错误而失败:

TypeError: Cannot cast scalar from dtype('<m8[ns]') to dtype('<m8') according to the rule 'same_kind'
另一方面,

'Plot'可以找到。

如何使用'scatter'来完成这项工作?

完整示例:

import pandas as pd


dates = ["Tue  2 Jun 16:55:51 CEST 2015",
"Wed  3 Jun 14:51:49 CEST 2015",
"Fri  5 Jun 10:31:59 CEST 2015",
"Sat  6 Jun 20:47:31 CEST 2015",
"Sun  7 Jun 13:58:23 CEST 2015",
"Mon  8 Jun 14:56:49 CEST 2015",
"Tue  9 Jun 23:39:11 CEST 2015",
"Sat 13 Jun 16:55:26 CEST 2015",
"Sun 14 Jun 15:52:34 CEST 2015",
"Sun 15 Jun 16:17:24 CEST 2015",
"Mon 16 Jun 13:23:18 CEST 2015"]

delta_dates = pd.to_datetime(dates) - pd.to_datetime("Tue  9 Jun 23:39:11 CEST 2015")


fig, ax = plt.subplots()

ax.plot(delta_dates, [1]*len(delta_dates)) # WORKS
ax.scatter(delta_dates, [1]*len(delta_dates)) # FAILS
plt.show()

1 个答案:

答案 0 :(得分:0)

您可以使用TimedeltaIndexFloat64Index转换为np.timedelta64。例如,要以秒为单位绘制delta_date,请使用

delta_dates = (pd.to_datetime(dates) - pd.to_datetime("Tue  9 Jun 23:39:11 CEST 2015")) / np.timedelta64(1, "s")

这适用于ax.scatter