带有熊猫时间戳的 Matplotlib 条形图

spa*_*ead 4 python numpy matplotlib pandas

我无法使这个非常简单的示例工作:

from numpy import datetime64
from pandas import Series
import matplotlib.pyplot as plt
import datetime

x = Series ([datetime64("2016-01-01"),datetime64("2016-02-01")]).astype(datetime)
y = Series ([0.1 , 0.2])

ax = plt.subplot(111)
ax.bar(x, y, width=10)
ax.xaxis_date()

plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

TypeError: float() argument must be a string or a number, not 'Timestamp'
Run Code Online (Sandbox Code Playgroud)

请注意astype(datetime)那篇文章 - 这是我在阅读其他 SO 帖子后尝试的内容。没有那一块,我会得到同样的错误。

另一方面,该示例在普通datetime64类型上工作得很好——也就是说,改变这两行:

x = [datetime64("2016-01-01"),datetime64("2016-02-01")]
y = [0.1 , 0.2]
Run Code Online (Sandbox Code Playgroud)

所以问题一定是Timestamp熊猫将datetime64对象转换成的类型。有没有办法让这个工作Timestamp直接使用,而不是恢复到datetime64?我在这里使用Series/Timestamp是因为我的真正目标是从DataFrame. (注意:我不能使用DataFrame绘图方法,因为我的真实示例在 seaborn 内FacetGrid,我必须直接使用 matplotlib。)

ele*_*ias 5

用:

ax.bar(x.values, y, width=10)
Run Code Online (Sandbox Code Playgroud)

使用 Series 对象时。问题是您没有发送与数组类似的对象,它是一个索引数组,matplotlib 不知道如何处理。values只返回数组