在pandas中带有错误栏的日期时间图

时间:2015-01-19 13:22:37

标签: datetime numpy matplotlib pandas

我正在尝试绘制一个数据框,其日期时间索引为 x - 和 y 错误。

考虑以下最小例子,我想要1/2天的错误栏,因为数据在此范围内被分箱:

from pandas import DataFrame
import numpy as np
import datetime

start = np.datetime64("2014-01-1")
stop = start + np.timedelta64(100, "D")

df = DataFrame()
df["y"] = np.random.normal(0, 1, 100)
df.index = np.arange(start, stop)
df["y"].plot()

但我尝试的所有内容都会导致错误,例如

xerr = np.timedelta64(0.5, "D")
xerr = np.timedelta64(12, "h")
xerr = datetime.timedelta(days=0.5)

那么如何实现长度为1/2天的错误栏呢?

2 个答案:

答案 0 :(得分:1)

仅使用pandas.DataFrame.plot(xerr=),只要pandas.TimedeltaDatetimeIndex频率具有相同的单位,错误就会起作用。

我从下面的代码中得到了2个我认为你想要的表格:

from pandas import DataFrame, date_range, Timedelta
import numpy as np

rng = date_range(start='2014-01-01', periods=5, freq='24H')
df = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)
terr = Timedelta(hours=12)
ax = df['y'].plot(xerr=len(df)*[terr])


rng2 = date_range(start='2014-01-01', periods=5, freq='D')
df2 = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)
terr2 = Timedelta(days=0.5)
ax2 = df2['y'].plot(xerr=len(df2)*[terr2])

答案 1 :(得分:0)

不确定是否可以使用pandas.DataFrame.plot()方法。 可以直接调用matplotlib

from pandas import DataFrame, date_range, Timedelta
import numpy as np
import matplotlib.pyplot as plt

rng = date_range(start='2014-01-01', periods=100, freq='D')
df = DataFrame({'y':np.random.normal(size=len(rng))}, index=rng)

terr = Timedelta(hours=12)
yerr = 0.05

fig, ax = plt.subplots()
ax.errorbar(df.index, df.y, xerr=terr)